Javascript 错误导出对象赢得';修改时,外部不会发生变化

Javascript 错误导出对象赢得';修改时,外部不会发生变化,javascript,node.js,modular-design,Javascript,Node.js,Modular Design,文件A.js function Game() { this.id = Math.random(); this.endTimeout = setTimeout(() => { this.end(this); return }, this.duration * 60 * 1000); } Game.prototype.addPlayer = function(game, player, items) { console.log('addPlayer to gam

文件A.js

function Game() {
this.id = Math.random();
this.endTimeout = setTimeout(() => {
    this.end(this);
    return
}, this.duration * 60 * 1000);
}
Game.prototype.addPlayer = function(game, player, items) {
        console.log('addPlayer to game.id ' + game.id)
        if (game.totalItemAmount >= 50) {
            clearTimeout(game.endTimeout)
            game.end(game);
        }
        return
    }
Game.prototype.end = function(game) {
game = new Game();
}

let game = new Game();
require('../../tests/B.js')(game)   
文件B.js

  module.exports = function (game) { 

    let test = setInterval(() => {
    for (var i = 0; i < 10; i++) {
           game.addPlayer(game, {
                playerID: '2134' + i,
                nickname: "player" + i

            },
    }, 4000);
module.exports=函数(游戏){
let test=setInterval(()=>{
对于(变量i=0;i<10;i++){
游戏。添加玩家(游戏{
玩家ID:'2134'+i,
昵称:“玩家”+i
},
}, 4000);
假设第一个随机
game.id
为2389423942,
addPlayer
方法将继续将玩家添加到2389423942,即使在游戏结束后,由于新游戏已经开始,id现在是另一个。
A.js中的
游戏
的替换是否也应该替换B.js中的游戏?如何修复该错误?

您只复制对象的引用以在
B.js中运行

修复方法是将(对游戏对象的引用)包装到另一个对象中,然后在其中修改该引用

A.js中替换

let game = new Game();
例如

let game = { myGame: new Game() }
B.js
game
中使用
game.myGame
(如适用)


(除此之外,您在
game.prototype
函数中使用了一个本地
game
变量。再次查看
this
。我认为您在这里偏离了轨道…

您只将对象的引用复制到
B.js
中的函数

修复方法是将(对游戏对象的引用)包装到另一个对象中,然后在其中修改该引用

A.js中替换

let game = new Game();
例如

let game = { myGame: new Game() }
B.js
game
中使用
game.myGame
(如适用)

(除此之外,您在
game.prototype
函数中使用了一个本地
game
变量。请再次查看
this
。我认为您在这里偏离了轨道……

{myGame:new game()}允许我将玩家添加到不同的游戏ID,或者每次我添加玩家时它都会创建游戏?请告诉我在没有本地引用此游戏的情况下如何结束此游戏(在end game=this){myGame:new game()}允许我将玩家添加到不同的游戏ID,或者每次我添加玩家时它都会创建游戏?请告诉我,如果没有本地对该游戏的引用,您将如何结束该游戏(在end game=此)