EventEmitter.call()是做什么的?

我看到了这个代码示例:

function Dog(name) { this.name = name; EventEmitter.call(this); } 

它从EventEmitterinheritance,但call()方法实际上做了什么?

基本上, Dog应该是一个属性name的构造函数。 EventEmitter.call(this)Dog实例创build时执行时,将从EventEmitter构造函数声明的属性附加到Dog

记住:构造函数仍然是函数,仍然可以作为函数使用。

 //An example EventEmitter function EventEmitter(){ //for example, if EventEmitter had these properties //when EventEmitter.call(this) is executed in the Dog constructor //it basically passes the new instance of Dog into this function as "this" //where here, it appends properties to it this.foo = 'foo'; this.bar = 'bar'; } //And your constructor Dog function Dog(name) { this.name = name; //during instance creation, this line calls the EventEmitter function //and passes "this" from this scope, which is your new instance of Dog //as "this" in the EventEmitter constructor EventEmitter.call(this); } //create Dog var newDog = new Dog('furball'); //the name, from the Dog constructor newDog.name; //furball //foo and bar, which were appended to the instance by calling EventEmitter.call(this) newDog.foo; //foo newDoc.bar; //bar 
 EventEmitter.call(this); 

这一行大致相当于在具有经典inheritance的语言中调用super()。