主文件
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);