DOM を経由せずに JavaScript オブジェクト グラフでイベントとイベント バブリングを実装するために使用できるライブラリまたはパターンを知っている人はいますか?
つまり、他のクラスのインスタンスを含むクラスのインスタンスがあり、グラフ/チェーンをバブルアップできるサブクラスからイベントをトリガーしたいと考えています。
助言がありますか?
DOM を経由せずに JavaScript オブジェクト グラフでイベントとイベント バブリングを実装するために使用できるライブラリまたはパターンを知っている人はいますか?
つまり、他のクラスのインスタンスを含むクラスのインスタンスがあり、グラフ/チェーンをバブルアップできるサブクラスからイベントをトリガーしたいと考えています。
助言がありますか?
bob.js フレームワークは、使用できるイベント メカニズムを公開します。イベントのオブジェクトとして、またはオブジェクトに関数を作成するように bob.js に依頼します。読みやすくするための 2 番目のアプローチを次に示します (以下のバブリングに関する注を参照してください)。
var DataListener = function() {
var fire = bob.event.namedEvent(this, 'received');
this.start = function(count) {
for (var i = 0; i < count; i++) {
fire(i + 1);
}
};
};
var listener = new DataListener();
listener.add_received(function(data) {
console.log('data received: ' + data);
});
listener.start(5);
// Output:
// data received: 1
// data received: 2
// data received: 3
// data received: 4
// data received: 5
バブリングについて: bob.js はバブリングをサポートしていません (少なくとも現時点では)。さらに、親で定義されたイベントが子で定義されたイベントに似ている場合、バブルが発生する可能性があります (Html DOM 要素の場合はそうですが、DOM 以外のオブジェクトの場合は常にそうではありません)。ただし、回避策として、子イベント リスナーを使用して、親オブジェクトでイベントを発生させることができます。その結果、バブリングのような効果が得られます。