Как указано в комментариях, не включайте состояние в функции, и это делает копирование функций ненужным.
Вот довольно тривиальный пример.
const EventEmitter = require('events');
class Game {
constructor(name, turn) {
this.turn = turn;
this.name = name;
this.events = new EventEmitter();
this.events.on('attack', () => {
console.log(`${this.name} is attacking`);
})
}
clone(){
const copy = new Game(this.name, this.turn);
//clone the other properties
return copy;
}
}
const g1 = new Game("One", 5);
const g2 = new Game("Two", 4);
g1.events.emit('attack');
g2.events.emit('attack');
const g3 = g1.clone();
g3.events.emit('attack');
Вы должныобратите особое внимание на клонирование самих свойств, но обратите внимание, что g3 является просто копией g1.Надеюсь, это поможет.