Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在js类中作为参数传递的函数setTimeout立即执行,并在setTimeout内调用类方法_Javascript - Fatal编程技术网

Javascript 在js类中作为参数传递的函数setTimeout立即执行,并在setTimeout内调用类方法

Javascript 在js类中作为参数传递的函数setTimeout立即执行,并在setTimeout内调用类方法,javascript,Javascript,Js类方法getInfo应该在延迟5秒后调用警报,但它会立即触发 function limiter (limit,hid,sid) { this.limit = limit; this.hid = hid; this.sid = sid; this.getInfo = function(aca) { setTimeout(alert(aca), 5000); }; } var limiter= new limiter(5,5,5);

Js类方法getInfo应该在延迟5秒后调用警报,但它会立即触发

function limiter (limit,hid,sid) {
    this.limit = limit;
    this.hid = hid;
    this.sid = sid;


    this.getInfo = function(aca) {

       setTimeout(alert(aca), 5000);
    };
}


var limiter= new limiter(5,5,5);

limiter.getInfo("loko roko");

警报
事件置于函数内

功能限制器(限位、hid、sid){
这个极限=极限;
this.hid=hid;
this.sid=sid;
console.log(this.limit);
this.getInfo=函数(aca){
设置超时(()=>{
console.log(this.limit);
警报(aca)
}, 5000);
};
}
var限制器=新限制器(5,5,5);

限制器。getInfo(“loko roko”)
警报
事件放置在函数中

功能限制器(限位、hid、sid){
这个极限=极限;
this.hid=hid;
this.sid=sid;
console.log(this.limit);
this.getInfo=函数(aca){
设置超时(()=>{
console.log(this.limit);
警报(aca)
}, 5000);
};
}
var限制器=新限制器(5,5,5);

限制器。getInfo(“loko roko”)
这是因为您没有将函数传递给
setTimeout()
,而是传递调用函数的结果。如果在一段随机代码中看到
alert(aca)
,这对您意味着什么?如果我这样写,我如何传递参数:this.getInfo=setTimeout(function(){…getInfo want be function),那是因为您没有将函数传递给
setTimeout()
,您正在传递调用函数的结果。如果在随机代码段中看到
警报(aca)
,这对您意味着什么?如果我这样写,我如何传递参数:this.getInfo=setTimeout(function(){…getInfo想要成为函数然后当我在超时函数中调用this.limit时,我得到一个错误,即this.limit是未定义的setTimeout(function(){alert(this.limit);},1000);this.start()我想打电话给startagain@Dime编辑了我的帖子。我无意中编辑了你的帖子,对不起,你能再写一次吗?:我试图在setTimeout函数中传递class方法,但它不起作用。这是有效的解决方案。我添加了“var newclass=This;”就在setTimeout函数之前,它工作了。当我在timeout函数中调用this.limit时,我得到一个错误,即this.limit是未定义的setTimeout(function(){alert(this.limit);},1000);this.start()我想打电话给startagain@Dime编辑了我的帖子。我无意中编辑了你的帖子,对不起,你能再写一次吗?:我试图在setTimeout函数中传递class方法,但它不起作用。这是有效的解决方案。我在setTimeout函数之前添加了“var newclass=This;”,它就起作用了。