如何使用EventEmitter-NodeJS处理多个对象



主文件

var DogModule = require('Dog');
var dogsList = [];
function addNewDog(){
  var newDog = new Dog();
  dogsList.push(newDog);
}
???.on('bark', function(barkSound) {
    console.log(barkSound);
});

狗文件

var EventEmitter = require('events').EventEmitter;
function Dog() {
    EventEmitter.call(this);
    this.name = "asda";
    this.chipId = 1234;
    this.emit('bark', "au-au");
}
Dog.prototype = {
   getName: function () {
     return this.name;
   },
   getChipId: function () {
     return this.chipId;
   }
}

问题1-如何将EventEmitter.prototype正确添加到Dog对象并保存当前原型,基本上只访问EventEmitter方法?

  • Dog.prototype=Object.create(EventEmitter.protype)
  • 使用util模块,然后使用util.inherits(Dog,EventEmitter)

这里的问题只是如何不覆盖现有的方法。。。


问题2-处理一个对象没有问题,但对于多个对象,我如何处理它们的个性,知道它们将存储在该列表中?

谢谢。

为了防止重写原型,可以使用Object.assign:

util.inherits(Dog, EventEmitter);
Dog.prototype = Object.assign({
  getName: function () {
    return this.name;
  },
  getChipId: function () {
    return this.chipId;
  }
}, Dog.prototype);

相关内容

  • 没有找到相关文章

最新更新