Javascript 在js类中作为参数传递的函数setTimeout立即执行,并在setTimeout内调用类方法
Js类方法getInfo应该在延迟5秒后调用警报,但它会立即触发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);
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;”,它就起作用了。