Javascript 如何使用EventEmitter-NodeJS处理多个对象
主文件Javascript 如何使用EventEmitter-NodeJS处理多个对象,javascript,node.js,events,event-handling,eventemitter,Javascript,Node.js,Events,Event Handling,Eventemitter,主文件 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').EventEmi
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-处理一个对象没有问题,但对于多个对象,我如何处理它们,知道它们将存储在该列表中
谢谢。为了防止重写原型,您可以使用
对象。分配:
util.inherits(Dog, EventEmitter);
Dog.prototype = Object.assign({
getName: function () {
return this.name;
},
getChipId: function () {
return this.chipId;
}
}, Dog.prototype);
对于继承,请遵循扩展EventEmitter的标准节点文档:正如我前面所说的,问题是使用util.inherits(Dog,EventEmitter)(与文档一样)覆盖对象原型的现有方法`首先,然后像在Dog.prototype.getName=function(){}
中那样分别添加每个方法,这样就不会覆盖以前的原型。这样做会覆盖以前的任何Dog.prototype
,所以不要这样做。我知道,但是当对象有大约100个方法时,重新格式化整个原型有点痛苦。这就是为什么我希望有一个更有效的解决方案。你可以将一个充满方法的对象与原型合并。很好的发现,它是ES6新功能的一部分!顺便说一句,你对问题2有什么想法?首先是好奇:p