[解決済み] Node.js - EventEmitterの継承
2023-02-16 10:28:17
質問
Node.jsのライブラリで、このパターンをよく見かけます。
Master.prototype.__proto__ = EventEmitter.prototype;
(ソース ここで )
なぜこのようなよくあるパターンで、どんなときに便利なのか、誰か例を挙げて説明していただけませんか?
どのように解決するのですか?
このコードの上のコメントにあるように、このコードで
Master
を継承し
EventEmitter.prototype
を継承しているので、その「クラス」のインスタンスを使用して、イベントを発生させたり、聞いたりすることができます。
例えば、あなたは今、こうすることができます。
masterInstance = new Master();
masterInstance.on('an_event', function () {
console.log('an event has happened');
});
// trigger the event
masterInstance.emit('an_event');
更新 : 多くのユーザが指摘するように、Nodeでこれを行う「標準的な」方法は「util.inherits」を使うことでしょう。
var EventEmitter = require('events').EventEmitter;
util.inherits(Master, EventEmitter);
2回目の更新
: ES6 クラスの導入に伴い、ES6 クラスを拡張することが推奨されます。
EventEmitter
クラスを拡張することをお勧めします。
const EventEmitter = require('events');
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();
myEmitter.on('event', () => {
console.log('an event occurred!');
});
myEmitter.emit('event');
関連
-
[解決済み] Node.jsのプログラムにコマンドライン引数を渡すにはどうしたらいいですか?
-
[解決済み] npm package.jsonファイルのdependencies, devDependencies, peerDependenciesの違いは何ですか?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] Node.jsで終了する方法
-
[解決済み] Node.jsを完全にアンインストールして、最初から再インストールする方法 (Mac OS X)
-
[解決済み] Node.jsのmodule.exportsの目的と使い方を教えてください。
-
[解決済み] Node.jsを最新バージョンにアップグレードする
-
[解決済み] Node.jsの例外処理のベストプラクティス
-
[解決済み] Node.jsのConnect、Express、「ミドルウェア」って何?
-
[解決済み】Node.jsでBase64エンコードを行うにはどうすればよいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Express.js req.bodyが未定義です。
-
[解決済み】MongoDBのデータ/DBが見つからない
-
[解決済み】nodemon - app crashed - waiting for file changes before start
-
[解決済み】NPMインストールエラー:解析中の予期せぬJSON入力の終了 '...nt-webpack-plugin": "0'' 付近。
-
[解決済み】E11000重複キーエラー mongodb mongooseのインデックス
-
[解決済み] EventEmitter のメモリリークの可能性が検出された
-
[解決済み] E: npm パッケージを見つけることができません。
-
[解決済み] Npmエラー - Windows NT - 解決方法
-
[解決済み] node.js - リクエスト - "emitter.setMaxListeners() "はどのように?
-
[解決済み] プロトタイプ継承 - 執筆中 [重複].