gpt4 book ai didi

javascript - 词法 `this` 和超时

转载 作者:太空宇宙 更新时间:2023-11-04 15:39:26 29 4
gpt4 key购买 nike

我正在阅读 YDKJS 书籍,我认为我理解词汇 this大多数情况下。

但是有一个包含代码的部分显示了这一点:

var obj = {
id: "awesome",
cool: function coolFn() {
console.log( this.id );
}
};

var id = "not awesome";

obj.cool(); // awesome

setTimeout( obj.cool, 100 ); // not awesome

好的,第一个 obj.cool()当然有道理......但为什么是 setTimeout打印not awesome .....我的意思是它还在打电话obj.cool()其中this指的是它自己的对象 id

或者 setTimeout 是否作为另一个调用 obj.cool() 的函数被调用?但即使在这种情况下(我尝试在另一个也有 obj.cool() 属性的函数中调用 id 并且它仍然打印出正确的属性......那么为什么 this 会随着 setTimeout 改变?

最佳答案

由于 OBJ.COOL 函数是通过引用传递的,因此您实际上并未用它传递上下文对象。该函数获取新的调用上下文并在 WINDOW 对象上执行,该对象现在有一个名为 ID 的属性,该属性是之前定义的。

关于javascript - 词法 `this` 和超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44017113/

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