Есть вот такой, упрощенный код:
var Game = function (players) {
this.game = {
players: []
};
console.log(this.getStateWithMe(players[0]).players); //тут все нормально
console.log(this.getStateWithMe(players[1]).players); //а тут this.game уже изменен
}
Game.prototype = {
getStateWithMe: function (player) {
//функция должна возвращать модифицированную копию this.game
var g = {};
for (prop in this.game) if (this.game.hasOwnProperty(prop)) {
g[prop] = this.game[prop];
}
g.players.push(player);
return g;
}
}
new Game(['a', 'b']);
Я пытаюсь реализовать функцию получения дочернего объекта, в зависимости от параметра. Но проблема в том, что прототипная функция
getStateWithMe() изменяет сам объект.
Как я понял это из-за того, что
var создает ссылку на объект, а не его копию.
Как это поправить, оставив функцию в прототипе?