Javascript&;jQuery:如何通过动画回调使函数无限大?

Javascript&;jQuery:如何通过动画回调使函数无限大?,javascript,jquery,this,Javascript,Jquery,This,有一个类Abon的对象,然后我希望这个对象在页面上移动 a = new Abon(); a.init(); a.move(); 方法move()包含: function abon_move () { var x = this.x; var y = this.y; var direction_x = Math.random()*5 - 5; var direction_y = Math.random()*5 - 5; var x_new = x + direction_x

有一个类
Abon
的对象,然后我希望这个对象在页面上移动

a = new Abon();
a.init();
a.move();
方法
move()
包含:

function abon_move () {
  var x = this.x;
  var y = this.y;

  var direction_x = Math.random()*5 - 5;
  var direction_y = Math.random()*5 - 5;

  var x_new = x + direction_x * this.movement_rate;
  var y_new = y + direction_y * this.movement_rate;
  console.log(x_new+" "+y_new)
  $(".abonent."+this.id).animate( {
        left:+x_new,
        top:+y_new
    }, 'slow', "linear", function() { this.move() });
}
我想要的就是在
动画
停止后,方法
移动
(表示为函数
abon_move()
)一次又一次地重复。但问题是回调中显示的
this.move()
与我的对象没有连接,因为
this
在该位置指向jQuery选择的HTML元素

UPD:

实际方法相同,但在
animate

然后,我尝试执行以下操作:

 setInterval( a[0].move , 300); //doesn't work - says `this` members are undefined
 setInterval( a[0].move() , 300); //works only one time and stops

谢谢你的帮助

将函数
abon\u move()
包装在
setTimeout
调用中,例如:
setTimeout(abon\u move,300)因此它将每300毫秒运行一次。

尝试以下操作:

function abon_move () {
    var x = this.x;
    var y = this.y;
    var class = this;
    ...

}

然后,在jQuery
animate
中,您可以使用变量
class

引用您的类,实际上将有一个对象数组。我现在真的不明白。我创建了另一个方法,它包含:
setTimeout(abon_move,300)仅,并且
abon\u move()
不起作用,因为我没有连接到
确定,但将move函数放在abon中。例如
Abon.prototype.move=function(){}
。然后您就可以访问此
。然后将计时器作为事件循环执行,例如
setTimeout(function(){for(a in-array_of_abons){a.move();},300)
。试过了,没有结果。你能看一下我在原始消息中发布的更新吗?我正在寻找=)事实上,我犯了一个错误。我相信
class
在JS中是一个保留关键字,但你可以使用任何其他名称。哦,我认为有必要使用
class
,不管怎样,它还是有效的,谢谢=)
function abon_move () {
    var x = this.x;
    var y = this.y;
    var class = this;
    ...

}