node.js клонирование объекта Eventemitter - PullRequest
0 голосов
/ 11 мая 2018

У меня есть игра

game = {
  turn: 5,
  players : []
}

game.events = new events.emitter()
game.events.on('attack', handleAttack)

Мне нужно клонировать (глубоко) игровое состояние точно к другому объекту, чтобы я мог запускать симуляции игры для ИИ. Как бы я клонировал объект события?

1 Ответ

0 голосов
/ 11 мая 2018

Как указано в комментариях, не включайте состояние в функции, и это делает копирование функций ненужным.

Вот довольно тривиальный пример.

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.Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...