您希望此代码返回“123”,但它返回的是窗口对象
function W() {
this.window = "123";
}
W.prototype = window;
(new W()).window; // window object, not "123"
请检查后续问题(window 作为原型使得 setTimeout 表现得很奇怪 https://stackoverflow.com/questions/37051606/window-as-prototype-makes-settimeout-behave-oddly)
The window
全球范围内的财产window
对象引用自身,并且它是不可变的。
因此,构造函数W
无法将该属性设置为123
.
window.window; // returns window object
window.window = "123";
window.window; // still returns window object
如果您尝试在您的W
构造函数,您将看到它正常工作。
function W() {
this.notWindow = "123";
}
W.prototype = window;
(new W()).notWindow; // returns "123"
这与原型无关,而是与尝试设置不可变属性有关。不过,非常有趣的问题!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)