Показать сообщение отдельно
  #109 (permalink)  
Старый 11.11.2009, 20:04
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

Сообщение от Yazla
Object.prototype.x=12; c(); // РАБОТАЕТ т. е. выводит 12
Сообщение от Yazla
с.prototype.x=12; c(); // НЕ работает //undefined
А с чего бы, вдруг, "x" разрешится в "c.prototype"? Scope chain - это цепь объектов переменных. Опрос её при разрешении имени (в данном случае "x") идёт последовательно изнутри вверх. Также, на каждом звене цепи делается просмотр вглубь звена - т.е. анализируется цепь прототипов звена (конкретного объекта переменных в цепи), если она есть. И лишь некоторые объекты переменных могут иметь прототип.

Глобальный объект в Gecko имеет прототип, и наследуется он от Object. Соответственно, всё, что попало в Object.prototype будет найдено при разрешении имени какой-нибудь переменной/свойства - и в данном случае, это "x".

В свою очередь с.prototype никакого отношения к объектам переменных не имеет.

Сообщение от Yazla
Наверно стоит почитать про прототип. Может посоветуете какую нибудь статью.
http://javascript.ru/blog/Dmitry-A.-...-CHast-7.-OOP. - там есть раздел про прототип, но лучше читать статью полностью.
__________________
Тонкости ECMAScript

Последний раз редактировалось Dmitry A. Soshnikov, 11.11.2009 в 20:08.
Ответить с цитированием