【发布时间】:2013-01-04 13:59:13
【问题描述】:
我在 Stoyan Stefanov 的 JavaScript Patterns 书中看到了以下代码(经过编辑以去除多余的脂肪):
function Universe() {
var instance = this;
Universe = function() {
return instance;
}
}
Universe.prototype.nothing = true;
var uni = new Universe();
Universe.prototype.everything = true;
var uni2 = new Universe();
uni.nothing; // true
uni2.nothing; // true, but I was expecting undefined
uni.everything; // undefined
uni2.everything; // undefined, but I was expecting true
我期待nothing 被分配给原始函数的原型,everything 被分配给闭包的原型(因为第二次分配发生在重新定义之后)。但是,输出显示发生了一些奇怪的事情,而这本书确实没有解释它。我还注意到:
-
Universe.prototype确实在重新定义函数后指向不同的对象,正如我所料。 - 重新定义后创建的其他实例仍将原始原型对象作为其
__proto__。这就是我不明白的。
谁能解释一下?
【问题讨论】:
标签: javascript prototype