与Javascript对象混淆

时间:2017-04-24 09:28:00

标签: javascript phaser-framework

所以,我已经开发了一个小游戏的基础... tic tac toe ...但我有一个问题而且我不知道如何以最好的方式解决这个问题...所以我有这样:

var playfield = function(){
this.board = [
    [null, null, null],
    [null, null, null],
    [null, null, null]
];

this.simulationMode = false;

this.nextSymbol = "X";

this.setSymbol = function(symbol, x, y){
        if(this.whoIsNext() == symbol || this.simulationMode){
            if(this.isFree(x, y)){
                this.board[y][x] = symbol;
                this.changeWhoIsNext();
                return true;
            }else{
                console.log("Field is not empty "+x+";"+y);
                return false;
            }   
        }else{
            console.log("It is not "+symbol+"'s turn");
        }
    };
...
}

这会存储游戏场本身。

var board1 = new playfield();

然后我想创建一个新实例来计算下一个动作:

var simboard = new playfield();

然后我这样做:

simboard.setSymbol("X", x, y);

它在board1和simboard中进行了更改。 为什么?我做错了什么......?

完整的来源可以在这里找到: https://gameink.net/js/tictactoe.js?PageSpeed=off

1 个答案:

答案 0 :(得分:0)

这是因为javascript对象引用

试试这个

playfield.prototype = Object.create(playfield.prototype);

所以无论何时你都会使用它,所以每次进入新实例时都会这样。