Руководство по 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

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

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

Полезные ссылки
Случайные записи
  • 14.03.2011">Руководство по actionscript. часть 3, стр. 087
  • 05.03.2011">Руководство по actionscript. часть 5, стр. 011
  • 24.02.2011">Руководство по actionscript. часть 7, стр. 011
  • 06.03.2011">Руководство по actionscript. часть 4, стр. 128
  • 13.03.2011">Руководство по actionscript. часть 3, стр. 091
  • 26.02.2011">Руководство по actionscript. часть 6, стр. 069
  • 27.08.2011">Пример успешной стратегии — компания Acer и её ноутбуки
  • 07.03.2011">Руководство по actionscript. часть 4, стр. 123
  • 28.04.2012">В Google Maps была добавлена функция 3D-фототуров
  • 04.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.31
  • 07.09.2011">Сим-карта sim4FLY — удобно и надежно
  • 03.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.62
  • 17.05.2010">Самоучитель по креативному веб-дизайну. Книга 2, стр.130
  • 16.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.28
  • 06.07.2011">Новая серия ультрапортативных ноутбуков Acer
Опрос

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

View Results

Loading ... Loading ...