gpt4 book ai didi

javascript - 使用窗口作为原型(prototype)在 javascript 中返回看似错误的值

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:22:04 24 4
gpt4 key购买 nike

您希望此代码返回“123”,但它返回的是窗口对象

function W() {
this.window = "123";
}

W.prototype = window;

(new W()).window; // window object, not "123"

请检查后续问题 ( window as prototype makes setTimeout behave oddly )

最佳答案

全局 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"

这与原型(prototype)无关,而是与尝试设置不可变属性有关。不过这个问题很有趣!

关于javascript - 使用窗口作为原型(prototype)在 javascript 中返回看似错误的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37046063/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com