Почему после вызова функции меняется объект? Есть вот такой, упрощенный код: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 создает ссылку на объект, а не его копию. Как это поправить, оставив функцию в прототипе?