在其中一个原型函数中调用JavaScript对象的构造函数是否正确?

Jos*_*ose 5 javascript oop

我正在审查一位同事的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对象是否正确?代码完美运行.谢谢!

Max*_*oom 4

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)