私は小さなライブラリとモジュールをたくさん書いていますが、通常これらのライブラリとモジュールにはいくつかのイベントが関連付けられています。今まで私は(多くのダウン短縮)のようにこれらを書いてきた:カスタムの.on()/。bind()を書く最もパフォーマンスのよい方法JavaScript
Library.prototype.on = function(event, callback){
self = this;
self.events[event] = callback;
}
その後、ユーザーはのような何かをするだろう:
Library.on('foo',function(){
console.log('bar');
});
このかかわらを行うには良い、よりパフォーマンスの高い方法はありますこれを実装する標準的な方法ですか?私はこの動作をサポートするためにJSプロジェクトにドロップできるシンプルなAPIが必要です。
おかげのようなイベントライブラリを使用して深刻なものについては
、これは完全に働いている:) –
だけ奇妙なことは、のremoveListenerが唯一の最後に追加されたが削除されていることです。 'removeListener( 'event')'の意図された使用は、(event.foo'のような名前空間を追加しない限り)人々が 'unbind( 'event')'を使ってすべての参照を削除する方法でしょうか? –
@OscarGodsonすべてのリスナーを手動で削除する必要があります。 'removeListener(ev) 'を呼び出すと、最後のリスナーが完全な偶然によって削除されます。 (インデックスは-1なので、最後のアイテムは削除されます)。あなたは 'removeListener(ev、handler)'を呼び出すべきです。 – Raynos