gpt4 book ai didi

javascript - 如何从匿名函数中删除函数的属性?

转载 作者:行者123 更新时间:2023-12-02 18:08:54 25 4
gpt4 key购买 nike

我有以下无法同时运行的函数:

function foo()
{
if(this.running) return;
this.running = true;
setTimeout(function() {
// Do Something
delete this.running;
}, 5000);
}

上面的代码似乎有效,但是当我检查匿名函数中 this 的值时,它指向 Window。我不确定这是否是删除该属性的正确方法。谁能告诉我为什么这有效吗?

最佳答案

是的,这是正确的,因为调用您在 setTimepout 中提供的匿名函数的对象是 window 对象,要使用 this 的值保存闭包变量,只需执行以下操作:

function foo()
{
if(this.running) return;
this.running = true;
var self=this;
setTimeout(function() {
// Do Something
delete self.running;
}, 5000);
}

更新:

当你运行从X对象执行的foo函数时(有X作为this),它会依次调用函数的内容,直到运行setTimeout函数,该函数将匿名函数添加到 sleep 队列下,执行将继续执行带有 X 对象的 foo 函数,

当 sleep 队列中的每个元素超过其超时时间时,都会在所有元素的 window 对象下调用它。

关于javascript - 如何从匿名函数中删除函数的属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19873403/

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