Javascript requestAnimationFrame范围更改为窗口
我有一个如下所示的对象链:Javascript requestAnimationFrame范围更改为窗口,javascript,requestanimationframe,Javascript,Requestanimationframe,我有一个如下所示的对象链: Game.world.update() 我想使用requestAnimationFrame来确定此函数的帧速率 但是,当我这样实现它时: World.prototype.update = function() { requestAnimationFrame(this.update); } 范围从世界对象更改为窗口对象调用requestAnimationFrame()时如何维护所需的作用域?我知道这与匿名函数等有关,但我无法理解 Game.world.upd
Game.world.update()
我想使用requestAnimationFrame来确定此函数的帧速率
但是,当我这样实现它时:
World.prototype.update = function()
{
requestAnimationFrame(this.update);
}
范围从世界对象更改为窗口对象调用requestAnimationFrame()时如何维护所需的作用域?我知道这与匿名函数等有关,但我无法理解
Game.world.update.call(scope);
其中scope是要传入的任何范围
通常的方法,适用于任何地方:
World.prototype.update = function()
{
var self = this;
requestAnimationFrame(function(){self.update()});
}
或者使用ES5():
另一种方法是使用lambda表达式,如下所示:
requestAnimationFrame((时间戳)=>{loop(时间戳)})代码>
这也保持了作用域,但更简洁。requestAnimationFrame(This.update.call(This));我试过了,但是我发现堆栈有问题。。。
World.prototype.update = function()
{
requestAnimationFrame(this.update.bind(this)});
}