Javascript 错误导出对象赢得';修改时,外部不会发生变化
文件A.jsJavascript 错误导出对象赢得';修改时,外部不会发生变化,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
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=此)