我有一些Javascript代码到目前为止工作正常,但我不明白变量“我”是如何在函数“运行”中设置的?
GameLoop.prototype.run = function() {
this.startTime = new Date().getTime();
var currentTimeMillis = this.startTime;
var loops;
var interpolation=0.0;
this.running=true;
return function(me){
loops = 0;
while (new Date().getTime() > currentTimeMillis && loops < me.MAX_FRAMESKIP) {
me.updateGame();
currentTimeMillis += me.SKIP_TICKS;
loops++;
}
interpolation = parseFloat(new Date().getTime() + me.SKIP_TICKS - currentTimeMillis) / parseFloat(me.SKIP_TICKS);
me.drawGame(interpolation);
}
}
该功能由下面的浏览器动画功能连续调用。由于我没有传递任何对f.run()调用的引用,我想是隐式设置对我的正确引用。有人可以解释我或给我一些解释这种行为的有用链接吗?
GameLoop.prototype.recursiveAnim = function() {
var f = this.run();
f.run();
this.animFrame( this.recursiveAnim );
};
答案 0 :(得分:0)
通过调用run
得到一个函数作为回报,该函数有一个参数,其名为me
。
例如
var x = function () { return function (me) { return me; } }
// by calling x, you get the function: `function (me) { return me; }
var f = x();
console.log(f(1)); // answer is 1