gpt4 book ai didi

javascript setTimeout调用错误

转载 作者:数据小太阳 更新时间:2023-10-29 04:39:19 25 4
gpt4 key购买 nike

我想调用 window.setTimeot使用我的自定义范围运行,所以我使用 call方法,但有问题。

function foo() {
this.bar = function() {
console.log("keep going");
window.setTimeout.call(this,this.bar,100);
}
this.bar();
}

new foo;

在 Firefox 下这只打印到控制台 1 行然后什么都没有,在谷歌浏览器下它抛出一个 TypeError .

我的代码有什么问题?

最佳答案

使用 call 在这里没有帮助:它用你的 this 对象调用 setTimeout,但是回调函数本身仍然是从全局调用的范围。你真正想做的是这样的:

function foo() {
var self = this;
this.bar = function() {
console.log("keep going");
window.setTimeout(function() { self.bar(); }, 100);
}
this.bar();
}

编辑:如果您真的想要类似于call 方法的东西,您可以使用bind。绑定(bind)函数的 this 值:

window.setTimeout(this.bar.bind(this), 100);

但是,这是新的 ECMAScript 5 规范的一部分,尚未得到所有浏览器的支持。

关于javascript setTimeout调用错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6112330/

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