2011-12-18 86 views
2

我正在重复使用旧的应用程序(游戏),因此可以运行几个游戏。 由于这个原因,我已经将属性更改为“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 

} 

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

+0

你必须显示调用renderTiles()的代码。 – jfriend00 2011-12-18 18:39:47

回答

2

您以错误的方式致电renderTilesthis将参考Game.prototype而不是gameGame实例)。

与调用它:

this.renderTiles(); 

this指的是什么函数内部取决于函数是如何被调用。 MDN提供了一个关于这个的good article [MDN]


FWIW:

只要你不直接给Game功能分配的属性,Game.bricksundefined为好,没有关系,你访问它,以及如何调用该函数。

+0

你说得对。我以错误的方式调用函数。增加了var = this,现在我将函数作为“this.turnTiles()”运行。谢谢! – holyredbeard 2011-12-18 19:41:08