Here Я нашел информацию горячей для работ цепочки областей видимости:Цепь области сначала смотрит на __parent__ или на __proto__?
... прежде чем мы перейдем к материнской ссылке, первая прото цепь считается.
Обратите внимание, что не во всех реализациях глобальный объект наследует из Object.prototype. Поведение, описанное на рисунке (с , ссылающееся на «неопределенную» переменную x из глобального контекста), может быть проведено , например. в SpiderMonkey.
Я использую Firefox браузер для тестирования, но, когда я установил глобальную переменную x
, и установить его в Object.prototype
собственности x
и сделать a()
у меня 4. Почему, если сначала пойти в proto
?
var x = 1;
Object.prototype.x = 2;
var a = function() {
y = 3;
return this.y + this.x;
};
a.x; // 2
a(); // 4
Ваш пример кода абсолютно не имеет смысла. Почему вы ожидаете, что он даст '6' и' 15', вместо '2' и' 4', как и следовало (по общему признанию, результат 'a()' сложный)? Также этот пример нигде не упоминается на странице, которую вы связали. – Bergi
Я сделал ошибку, извините –
'Object.prototype.x' около последнего места JS ищет' x' – dandavis