繁体   English   中英

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

[英]How handle multiple objects with 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.prototype);
  • 使用 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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM