从原型函数访问属性

时间:2011-12-18 18:36:46

标签: javascript this prototype-programming

我正在重复使用旧的应用程序(游戏),所以可以在其中运行几个游戏。 因此我将属性更改为“this.propery”,这在我的应用程序中随处可用。 但是,唯一可以访问属性的原型函数是“startGame”。 我尝试了“this.bricks”和“Game.bricks”,但是当尝试在“startGame”的任何其他功能中触及它们时,两者都是未定义的。

给我的任何提示?

var game = new Game();
game.startGame();

Game = function(){
this.bricks = 2;
this.checkOddEven = 0;
    ...
}


Game.prototype.startGame = function() {
    console.log(this.bricks) <- 2
    console.log(Game.bricks) <- 2

// Code goes here...

    Game.prototype.renderTiles()
}

Game.prototype.renderTiles = function() {

// code goes here...

    console.log(this.bricks) <- undefined
    console.log(Game.bricks) <- undefined

}

......其他原型功能也是如此。

1 个答案:

答案 0 :(得分:3)

您以错误的方式致电renderTilesthis会引用Game.prototype而不是gameGame个实例)。

用以下方式调用:

this.renderTiles();

函数内部this所指的内容取决于函数的调用方式。 MDN提供good article [MDN]即可。


FWIW:

只要您不直接将属性分配给Game函数,Game.bricks也应该是undefined,无论您在何处访问它以及如何调用该函数。< / p>