Object中的JavaScript setTimeout

use*_*743 0 javascript settimeout

我试图给一个对象一个倒数计时器,当倒计时结束时,它应该调用一个从数组中删除该对象的函数.

array = [];

var object = {
    'name' : 'user',
    'limit' : function() {
         setTimeout(destroyMe(this),10000);
    }
}

array.push(object);

var destroyMe = function(obj) {
    array.remove(obj);
}
Run Code Online (Sandbox Code Playgroud)

我知道这可能有问题,但超时功能根本不起作用,甚至不是这样的:

var object = {
    'name' : 'user',
    'limit' : function() {
               setTimeout(console.log("dd"),3000);
            }
}
Run Code Online (Sandbox Code Playgroud)

也许有人可以告诉我我的setTimeout版本的问题.谢谢

Lee*_*lor 5

setTimeout接受对函数的引用.您拥有的代码是调用该函数.

这应该改为:

var object = 
{
    'name' : 'user',
    'limit' : function() 
    {
        setTimeout(function() { destroyMe(this); }, 10000);
    }
}
Run Code Online (Sandbox Code Playgroud)

(this在这种情况下你可能会遇到问题,试试吧!)

var object = 
{
    'name' : 'user',
    'limit' : function() 
    {
        setTimeout( function() { console.log("dd"); },3000);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • `this`将成为全球对象.他需要使用指向正确对象的其他变量. (2认同)