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

Например, следующий код определяет динамическую переменную экземпляра getBonus в объекте prototype функции Employee ( ) и присваивает этой переменной функцию, которая подсчитывает и возвращает премию по итогам года:

Employee. prototype. getBonus = function (percentage:int).-Number { // Возвращает размер премии в зависимости от зарплаты сотрудника // и указанного процента return this. salary * (percentage/100);

}

В результате все объекты, созданные из функции Employee ( ), могут использовать функцию getBonus ( ) так, будто она была присвоена их собственным динамическим переменным экземпляра:

var worker = new Employee(25, 27000); trace(worker. getBonusdO)); // Выводит: 2700

Использование объектов-прототипов для дополнения классов

Как уже было сказано, язык ActionScript определяет для каждой функции специальную статическую переменную prototype. Используя переменную prototype функции, мы можем разделять информацию и поведение между всеми объектами, созданными из этой функции.

Подобно тому, как язык ActionScript определяет переменную prototype для каждой функции, он также определяет статическую переменную prototype для каждого класса. Используя статическую переменную prototype, мы можем добавлять разделяемую между всеми экземплярами данного класса информацию и поведение на этапе выполнения программы.

Например, следующий код определяет новую динамическую переменную экземпляра isEmpty в объекте prototype внутреннего класса String и присваивает ей функцию. Эта функция возвращает значение true, когда строка не содержит символов; в противном случае функция возвращает значение false:

String. prototype. isEmpty = function ( ) { return (this == «») ? true : false;

}:

Для вызова функции isEmpty ( ) над объектом String мы используем следующий код:

var si:Stri ng = «Hello World»; var s2:String = «»;

trace(sl. isEmpty( )); // Выводит: false trace(s2.isEmpty( )); // Выводит: true

Тем не менее в предыдущем примере кода — и вообще во всей этой методике — существует проблема: динамическая переменная экземпляра добавляется только на этапе выполнения программы; следовательно, компилятор не имеет ни малейшего представления о том, что эта переменная существует, и сгенерирует ошибку, если компиляция программы будет выполняться в строгом режиме. Например, при компиляции программы в строгом режиме код из предыдущего примера вызовет следующую ошибку:

Call to a possibly undefined method isEmpty through a reference with static type String.

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

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

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

Полезные ссылки
Случайные записи
  • 09.06.2011">Витамин С подавляет иммунитет
  • 06.04.2010">Бесплатные шрифты
  • 17.03.2011">Руководство по actionscript. часть 2, стр. 138
  • 03.03.2011">Руководство по actionscript. часть 5, стр. 074
  • 26.02.2011">Руководство по actionscript. часть 6, стр. 072
  • 16.03.2011">Руководство по actionscript. часть 3, стр. 011
  • 25.02.2011">Руководство по actionscript. часть 6, стр. 103
  • 27.02.2011">Руководство по actionscript. часть 6, стр. 036
  • 03.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.56
  • 11.05.2010">Самоучитель по креативному веб-дизайну. Книга 1, стр.37
  • 13.06.2010">Самоучитель по креативному веб-дизайну. Книга 4, стр.104
  • 03.06.2010">Самоучитель по креативному веб-дизайну. Книга 3, стр.52
  • 06.03.2011">Руководство по actionscript. часть 4, стр. 153
  • 22.01.2011">Руководство по actionscript. часть 1, стр. 125
  • 15.03.2011">Руководство по actionscript. часть 3, стр. 037
Опрос

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

View Results

Loading ... Loading ...