隐式传递对象引用如何工作?

时间:2013-12-07 12:10:24

标签: javascript

我有一些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 );
    };

1 个答案:

答案 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