gpt4 book ai didi

javascript - setTimeout 和这个 - 最简单的解决方案?

转载 作者:行者123 更新时间:2023-11-30 10:30:38 24 4
gpt4 key购买 nike

正如我们所知,setTimeout 无法与 this 一起正常工作,因为它在全局范围内运行(而 this 将是 窗口)

但我做了一个简单的 test :

只需用函数包装它:

var o={}
o.a=1;
o.m=function (){alert(this.a);}


setTimeout(
function (){
o.m() ;
}

,100);

它会提醒 1

我在这里遗漏了什么吗?为什么没有答案建议这个解决方案?它的行为不同吗?

附注:对于那些感兴趣的人,这里有一个失败的演示:

var o={}
o.a=1;
o.m=function (){alert(this.a);}


setTimeout( o.m ,100); //undefined

最佳答案

正确的做法是bind()匿名函数的作用域。

var o = {};
o.a = 1;

setTimeout(function (){
alert(this.a);
}.bind(o), 1000);

虽然您的答案产生了相同的结果,但它并未从匿名函数中访问 o 的范围。它只是调用全局对象 o 的函数。

您对 this.a 的引用来自 o 的范围。

关于javascript - setTimeout 和这个 - 最简单的解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17145485/

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