如何在Javascript中正确引用对象方法本身?
从对象函数本身引用对象函数的正确方法是什么,这样我就可以在Javascript中使用setTimeout多次调用它?换句话说,我希望能够做到这一点:如何在Javascript中正确引用对象方法本身?,javascript,Javascript,从对象函数本身引用对象函数的正确方法是什么,这样我就可以在Javascript中使用setTimeout多次调用它?换句话说,我希望能够做到这一点: Foo.prototype.move = function() { if (this.count_a < 5) { this.count_a += 1; // setTimeout(this.move, 500); // doesn't work // setTimeout(f
Foo.prototype.move = function() {
if (this.count_a < 5) {
this.count_a += 1;
// setTimeout(this.move, 500); // doesn't work
// setTimeout(function() { this.move(); }, 500); // doesn't work
}
}
Foo.prototype.move=function(){
如果(此计数a<5){
这个。计数a+=1;
//setTimeout(this.move,500);//不起作用
//setTimeout(function(){this.move();},500);//不起作用
}
}
我已经尝试了几件事情,但似乎都不起作用:超时内的
此
属性将指向确实执行传递的回调的对象
使用.bind(this)
可以说,调用程序必须使用this点来传递对象
Foo.prototype.move = function() {
if (this.count_a < 5) {
this.count_a += 1;
// setTimeout(this.move, 500);
setTimeout(function() { this.move(); }.bind(this), 500);
}
}
Foo.prototype.move=function(){
如果(此计数a<5){
这个。计数a+=1;
//setTimeout(this.move,500);
setTimeout(函数(){this.move();}.bind(this),500);
}
}
或使用参考资料:
Foo.prototype.move = function() {
var self = this;
if (this.count_a < 5) {
this.count_a += 1;
// setTimeout(this.move, 500);
setTimeout(function() { self.move(); }, 500);
}
}
Foo.prototype.move=function(){
var self=这个;
如果(此计数a<5){
这个。计数a+=1;
//setTimeout(this.move,500);
setTimeout(函数(){self.move();},500);
}
}
当窗口计时器功能运行时,它有一个全局范围-它不在您的功能范围内,也在窗口内
标记此-
Foo.prototype.move= function(){
var T= this;
if(T.count_a<5){
T.count_a += 1;
setTimeout(function(){T.move();},500);
}
}
Foo.prototype.move=function(){
var T=这个;
if(T.count_a功能移动(a){
设置超时(
函数(){
如果(a<10){
a=a+1;
动议(a);
}
}, 500); }
移动(0);
function move (a) {
setTimeout(
function() {
if (a < 10) {
a = a+ 1;
move(a);
}
}, 500); }
move(0);