私はNodejsを初めて使用しています。EventEmitter
のlistenerCount()
メソッドに関する質問がありますが、一般的に静的メソッドを呼び出す方法もあります。EventEmitter()の "静的メソッド"
var events = require('events');
var eventEmitter = new events.EventEmitter();
// listener #1
var listner1 = function listner1() {
console.log('listner1 executed.');
}
// listener #2
var listner2 = function listner2() {
console.log('listner2 executed.');
}
// Bind the connection event with the listner1 function
eventEmitter.addListener('connection', listner1);
// Bind the connection event with the listner2 function
eventEmitter.on('connection', listner2);
var eventListeners = require('events').EventEmitter.listenerCount
(eventEmitter,'connection');
console.log(eventListeners + " Listner(s) listening to connection event");
// Fire the connection event
eventEmitter.emit('connection');
// Remove the binding of listner1 function
eventEmitter.removeListener('connection', listner1);
console.log("Listner1 will not listen now.");
// Fire the connection event
eventEmitter.emit('connection');
eventListeners = require('events').EventEmitter.listenerCount(eventEmitter,'connection');
console.log(eventListeners + " Listner(s) listening to connection event");
console.log("Program Ended.");
は、それが再びイベントを必要とすることによってevents
「クラス」(?それはクラスである)にlistenerCount()
メソッドを呼び出します。これは、イベント・エミッターのTutorialsPointのNodejsチュートリアルからのサンプルコードです。あなたが直接events
オブジェクト上でそれを呼び出すことはできませんので、
var eventListeners = require('events').EventEmitter.listenerCount (eventEmitter,'connection')
listenerCount()
は、私が思う、基本的に静的メソッドである:私はそれを言うの部分に言及しています。
(私は実装がそのようである理由もかなり理解していない、と私のような、私のeventEmitter
オブジェクト上でそれを呼び出すことができるように、なぜそれが実装されない:eventEmitter.listenerCount('connection')
)
しかし、いずれにせよ、私は、試してみました何、それはこのように見えたように、(このコードでは、両方のインスタンス上の)追加require
コールせずに、私のevents
オブジェクトにこの静的メソッドを呼び出すことです:
events.EventEmitter.listenerCount(eventEmitter, "connection");
と出力プログラムの内容は同じでした。
これは私が質問したのは、作成者がこれらの呼び出しごとに新しいrequire
を作成して実際に呼び出した理由で、呼び出しの動作に違いがあります元のコードで作成され、私の変更?