簡體   English   中英

從子對象傳播JavaScript事件

[英]JavaScript events propagation from Child objects

var parent = (function() {
    // private vars .....
    // private methods....

    var childObj = new Child()

    return {
        public: publicmethods,
        on: on
    };
}());


function Child() {
    var events;
};

Child.prototype.on(ev, fn) {
}

不清楚如何有效地使子對象的事件起泡。 考慮一個為高級應用程序提供命名空間接口的庫。 應用程序可以注冊所有事件。 父對象如何捕獲子對象(多個)中的事件,並將其傳播/冒泡直至應用程序?

一種明顯的方式是,每個子對象都向父對象提供接口以注冊事件,然后每當特定的子事件觸發時,父對象就必須對其進行冒泡。 但是我認為這不必要地涉及許多冗余代碼,因為這將需要對每個Child對象進行。 也就是說,每種不同類型的Child對象都必須復制觀察者(pub-sub)模式的代碼,以注冊事件和觸發事件。 隨着父級開始創建多種類型的對象(Child1,Child2,Child3等),這將變得難以管理。

有沒有更好的方法來解決這個問題? 使用某種模式進行事件委托或冒泡。 現有的大多數文檔都談論DOM空間中的事件委托。 但是,如前所述,這與DOM不相關。

將DOM用作設計您描述的事件系統的參考,傳播和冒泡是可行的,因為所有元素都繼承了實現並參與該過程的公共基本類型。

每個事件從最高父級傳播到路徑上的所有后代,直至到達目標元素,並沿途傳遞上下文對象。 該對象用於將事件詳細信息傳遞給處理程序,並通知傳播系統它應停止傳播。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM