Руководство по actionscript. часть 2, стр. 123
Рассмотрим, как работают цепочки прототипов. Предположим, что мы создаем функцию Employee ( ), как делали это раньше, в объекте-прототипе которой определяем динамическую переменную экземпляра company:
function Employee ( ) { } •
Employee. prototype. company = «AnyCorp»;
Любой объект, созданный из функции Employee ( ), может обращаться к переменной company через объект-прототип функции Empoyee ( ). Ничего нового. Теперь предположим, что мы создали еще одну функцию Manager ( ):
function Manager ( ) { }
Предположим также, что необходимо сделать так, чтобы объекты, созданные из функции Manager ( ), могли обращаться к переменной company через объект-прототип функции Employee ( ). Для этого мы присваиваем объект, созданный из функции Employee ( ), переменной prototype функции Manager ( ).
Manager. prototype = new Employee( );
Теперь рассмотрим, что произойдет, если мы обратимся к переменной с именем » company» через объект, созданный из функции Manager ( ), как показано в следующем коде:
var worker = new Manager( ); trace(worker. company);
При выполнении предыдущего кода среда Flash проверяет, имеет ли объект worker переменную или метод экземпляра с именем » company». Объект worker не имеет
переменной или метода экземпляра с таким именем, поэтому далее среда выполнения Flash проверяет, определена ли динамическая переменная экземпляра с именем «company» в объекте-прототипе функции Manager ( ). Сам по себе объект-прототип функции Manager ( ) является объектом, созданным из функции Employee ( ). Тем не менее в объектах, созданных из функции Employee ( ), динамическая переменная экземпляра с именем «company» не определена. Следовательно, после этого среда Flash проверяет, определена ли динамическая переменная экземпляра с именем » company» в объекте-прототипе функции Employee ( ). В нем такая переменная определена, поэтому среда выполнения Flash использует ее так, будто это собственная переменная объекта worker.
Рассмотрим путь, который проходит среда Flash при поиске переменной с именем «company».
1. Ищем переменную company в объекте worker. Не найдена.