Руководство по actionscript. часть 2, стр. 122
Яо-русски она будет звучать так: Вызов возможно неопределенного метода isEmpty через ссылку на статический тип String.
Чтобы обращение к функции isEmpty ( ) при использовании строгого режима не приводило к ошибке на этапе компиляции, мы должны применять динамическое обращение, как показано в следующем коде:
sl["isEmpty"]( )
С другой стороны, если бы класс String не был объявлен с использованием атрибута dynamic, первоначальный подход (то есть si. isEmpty ( ) ) не вызывал бы ошибку.
Стоит отметить, что фиксированные переменные и методы всегда имеют преимущество перед переменными прототипа. В предыдущем примере, если в классе String уже определен метод или переменная экземпляра с именем isEmpty, то все обращения к свойству isEmpty будут относиться к этой переменной или к методу экземпляра, а не к динамической переменной экземпляра объекта-прототипа класса String.
Цепочка прототипов
Из предыдущих разделов мы узнали, что объект-прототип может использоваться для разделения информации и поведения между объектами, созданными т определенной <^нкнда-констр^ктора или класса. фактически обращаться к данному объекту-прототипу можно и за пределами объектов, созданных из функции или класса, которому принадлежит данный прототип.
В случае класса к динамической переменной экземпляра, определенной в объекте-прототипе данного класса, можно обращаться не только через экземпляры этого класса, но и через экземпляры его потомков. Это демонстрирует следующий простой код:
// Создаем простейший класс А dynamic public class А {
}
// Создаем другой простейший класс В, который расширяет класс А
dynamic public class В extends А {
}
// Создаем основной класс приложения public class Main extends Sprite { public function Main ( ) {
// Добавляем динамическую переменную экземпляра в объект-прототип
// класса А
A. prototype. day = «Monday»;
// Обращаемся к переменной A. prototype. day через экземпляр класса В
var b:B = new В( );
trace(b. day); // Выводит: «Monday»
}
}
В случае функции обращаться к динамическим переменным экземпляра, определенным в объекте-прототипе функции, можно не только через любой объект, созданный из этой функции, но и через любой объект, цепочка прототипов которого включает объект-прототип данной функции.