Сообщение от 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. - там есть раздел про прототип, но лучше читать статью полностью.