为什么这个对象未定义?

时间:2015-07-29 04:45:35

标签: javascript algorithm oop events javascript-events

我有一个“等级”Game来对抗游戏,而内部的“等级”Snake定义游戏中的玩家。我的问题是,links中的成员Snake在调用undefined函数时显示为move,我无法弄清楚为什么会这样。

这是Game定义(为了便于阅读而删除了很多内容)。如果需要,我可以进行完整的代码转储。

function Game ( board, numBlocks )
{ 

    // ...

    this.speedMap = { "fast": 100, "medium": 300, "slow": 600 }; 
    this.curSpeed; 
    this.mover; 

    // ... 

    this.Snake = function ( game )
    {
        this.links; 
        this.dx;  
        this.dy; 

        this.createNew = function ( )
        {
            this.dx = 0; this.dy = 0;
            this.links = [];  

            // ...
        }

        this.move = function ( )
        {
            console.log(this.links); // test

            // ^ That is printing 'undefined'! Didn't I initialize it in 'createNew', though????

            // ... 

        }


    }

    this.startNew = function ( spd )
    {
        // ...        

        this.snake = new this.Snake(this);
        this.snake.createNew();

        // ... 

        this.curSpeed = spd;
        this.mover = setInterval(this.snake.move, this.speedMap[this.curSpeed]);
    }     

}

1 个答案:

答案 0 :(得分:0)

在函数中,this关键字始终引用父对象。在您的情况下,如果您的代码在浏览器中运行,它可能是窗口对象。