我正在审查一位同事的JavaScript代码,他写了一个Object原型函数,我认为这对于面向对象编程的原理是不正确的.
Game.prototype.reset = function() {
if (game.over) {
game.over = false;
game = new Game(players);
}
}
Run Code Online (Sandbox Code Playgroud)
下面几行,游戏变量被声明为全局变量.
var game = new Game(players);
Run Code Online (Sandbox Code Playgroud)
那么,从一个构造函数创建一个新的Game对象是否正确?代码完美运行.谢谢!
game他不应该引用原型方法内的变量,就像game实例的名称一样。相反,他应该使用this来引用当前对象。
在该reset方法中,他不应该创建新的游戏实例,而应该真正重置游戏字段,如下所示:
Game.prototype.reset = function() {
if (this.over) {
this.over = false;
this.initialize(this.players);
}
}
Game.prototype.initialize = function(players) {
this.players = players;
:
}
Run Code Online (Sandbox Code Playgroud)