我正在重复使用旧的应用程序(游戏),所以可以在其中运行几个游戏。 因此我将属性更改为“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 :(得分:3)
您以错误的方式致电renderTiles
。 this
会引用Game.prototype
而不是game
(Game
个实例)。
用以下方式调用:
this.renderTiles();
函数内部this
所指的内容取决于函数的调用方式。 MDN提供good article [MDN]即可。
FWIW:
只要您不直接将属性分配给Game
函数,Game.bricks
也应该是undefined
,无论您在何处访问它以及如何调用该函数。< / p>