Руководство по actionscript. часть 2, стр. 115

Динамическое добавление нового поведения в экземпляр

Когда вы познакомитесь с тем, как создавать динамические переменные экземпляра, у вас может возникнуть вопрос, поддерживает ли язык ActionScript и динамические методы экземпляра, то есть добавление нового метода экземпляра в один конкретный объект без добавления этого метода в любые другие экземпляры класса данного объекта. Фактически формальных способов для динамического добавления настоящего метода экземпляра в объект не существует. Тем не менее, присвоив замыкание функции динамической переменной экземпляра, мы можем имитировать эффект добавления нового метода в отдельный объект (чтобы освежить в памяти смысл фразы «замыкание функции», обратитесь к гл. 5). Следующий код демонстрирует общий подход:

некийОбъект. некаяДинамическаяПеременная = некаяФункция;

В приведенном коде некийОбъект — это экземпляр динамического класса, некаяДинамическаяПеременная — имя динамической переменной экземпляра (которая может являться либо новой, либо существующей переменной), а некаяФункция — ссылка на замыкание функции. Обычно функция некаяФункция задается с помощью литерала функции, как показано в следующем коде:

некийОбъект. некаяДинамическаяПеременная = function (параметр1, параметр2… параметрп) { II Тело функции

}

После того как функция некаяФункция будет присвоена динамической переменной экземпляра, она может быть вызвана через этот объект точно так же, как и обычный метод экземпляра, что показано в следующем коде:

некийОбъект. некаяДинамическаяПеременная(значение1, значение2. . . значениеп);

Чтобы продемонстрировать использование предыдущего общего синтаксиса, вернемся к примеру с переменной info из предыдущего раздела:

var info:Object = new Object( ); info. city = «Toronto»; info. country = «Canada»;

Предположим, мы хотим добавить в объект, на который ссылается переменная info, новое поведение — возможность форматировать и отображать собственное содержимое в виде строки. Мы создадим новую переменную экземпляра get Address, которой присвоим желаемую функцию форматирования, как показано в следующем коде:

info. getAddress = function ( ):String { return this. city + «, » + this. country;

}

Для вызова этой функции используется следующий код:

trace(info. getAddress( ));

Обратите внимание, что внутри тела функции, присвоенной переменной get Address, мы можем использовать ключевое слово this для обращения к переменным и методам объекта, через который вызывается эта функция. На самом деле в случае с замыканиями функций обратиться без использования ключевого слова this к переменным и методам объекта, через который вызывается эта функция, невозможно. Предположим, мы убрали ключевое слово this из описания функции getAddress ( ), как показано в следующем коде:

info. getAddress = function ( ):String { return city + «, » + country;

}

При поиске переменных city и country среда выполнения Flash не рассматривает автоматически переменные экземпляра объекта, на который ссылается переменная info. Следовательно, предыдущий код вызовет ошибку (если выше в цепочке видимости функции getAddress ( ) не существует других переменных с именами city и country).

google.com bobrdobr.ru del.icio.us technorati.com linkstore.ru news2.ru rumarkz.ru memori.ru moemesto.ru

Оставить комментарий

Вы должны авторизоваться для отправки комментария.

Полезные ссылки
Случайные записи
  • 18.03.2011">Руководство по actionscript. часть 2, стр. 130
  • 17.07.2019">Выбираем ноутбук: игровой или офисный?
  • 14.03.2011">Руководство по actionscript. часть 3, стр. 062
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 010
  • 08.03.2011">Руководство по actionscript. часть 4, стр. 081
  • 06.09.2011">Фотография жива и будет жить
  • 03.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.80
  • 23.01.2011">Руководство по actionscript. часть 1, стр. 093
  • 07.01.2010">Кинетическая типографика
  • 27.02.2011">Руководство по actionscript. часть 6, стр. 037
  • 14.03.2011">Руководство по actionscript. часть 3, стр. 085
  • 13.03.2011">Руководство по actionscript. часть 3, стр. 099
  • 27.02.2011">Руководство по actionscript. часть 6, стр. 028
  • 25.02.2011">Руководство по actionscript. часть 6, стр. 084
  • 18.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.98
Опрос

Какие цвета вы предпочитаете?

View Results

Loading ... Loading ...