2016-04-18 21 views
-1

JavaScriptで「人工的な」イベントを渡す方法にはいくつかの答えがあります。私が理解しない何イベントはどのようにJavaScriptメソッドに渡されますか?

は、どこでも宣言しているように見えるdoes notのにもかかわらず、直接「イベント」変数を使用してアクセスできるように渡されない場合、イベントはメソッドとイベントに渡される方法です。

誰かがこれを説明することはできますか?事前ここ

+2

あなたが何を言ってるのかの例を提供することはできますか? – dan08

答えて

1

おかげで初歩的なイベントリスナーされます。次に例として、あなたはEventCallerを作成することができます

class EventCaller { 
    constructor() { 
     this.listeners = []; 
    } 

    addListener(obj) { 
     if (obj.trigger) { this.listeners.push(obj); } 
    } 

    trigger(event, ..data) { 
     this.listeners.forEach((listener) => listener.trigger(event, ...data)); 
    } 
} 

class EventListener { 
    constructor() { this.eventsListeningTo = []; } 

    listenTo(item) { 
     if (!item.addListener) { throw new Error('Cannot add listener error'); } 
     item.addListener(this); 
    } 

    trigger(event, ...data) { 
     if (this[`on${event}`]) {this[`on${event}`](...data)} 
    } 

    onFoo({bar, foo}) { 
     console.log(bar, foo); 
    } 
} 

const eventAgg = new EventCaller(); 

を次にいくつかのイベントリスナー

を作成
const a = new EventListener(); 
const b = new EventListener(); 

次に、aとbは、eventAggイベントを待ち受けることができます。

a.listenTo(eventAgg); b.listenTo(eventAgg)。だから、

今、私は今abの両方が、彼らは両方ともその擬似イベントをリッスンしているので、lemons, 42をログアウト慰めるます

eventAgg.trigger('Foo', {bar: 'lemons', foo: 42}); 

をトリガします。


これは単なる基本的なものです。 jqueryの、バックボーン、等角度のすべてのさまざまな方法でこれを実装する(私は確信している)、それはすべてのコールバック(またはそれ以降のコードでさえ約束)に降りてくる

関連する問題