2013-05-21 15 views
5

Ci sono un sacco di esempio non usare events.EventEmitter.call(this) nei costruttori evento emettitore personalizzati, mentre altri lo usano (official documentation):Event.EventEmitter.call (this) richiesto durante la creazione di un EventEmitter personalizzato?

var events = require('events') 
    , util = require('util'); 

var MyEmitter = function() { 
    events.EventEmitter.call(this); 
}; 

util.inherits(MyEmitter, events.EventEmitter); 

MyEmitter.prototype.write = function() { 
    this.emit('tick'); 
}; 

Con la mia comprensione di base di JavaScript non so se ne ho bisogno. La chiamata è necessaria per inizializzare le cose all'interno dello EventEmitter?

risposta

5

Sì, lo è.

Prima del nodo 0.10, non si romperà se lo si dimentica.

Ora, it will:

Il costruttore EventEmitter inizializza varie proprietà ora. Funziona ancora bene come genitore di ereditarietà OOP, ma devi fare correttamente l'ereditarietà. Il pattern di ereditarietà JS di Broken-Style non funzionerà quando si estende la classe EventEmitter. Questo stile di ereditarietà non è mai stato supportato, ma prima di 0.10 non si è effettivamente interrotto.