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对象完成。也就是说,每种不同类型的Child对象都必须复制观察者(pub-sub)模式的代码,以便注册事件和触发事件。当父母开始创建多种类型的对象(Child1,Child2,Child3等)时,这将变得无法管理。
有没有更好的方法来管理它?使用某种模式进行事件委托或冒泡。大多数现有文档都讨论DOM空间中的事件委托。但是如前所述,这与DOM无关。
答案 0 :(得分:0)
将DOM作为设计您描述的事件系统的参考,传播和冒泡是有效的,因为所有元素都继承了实现和参与该过程的公共基类型。
每个事件都从最顶层的父项传播到路径上的所有后代,直到它到达目标元素,沿途传递上下文对象。此对象用于将事件详细信息传递给处理程序,并通知传播系统它应该停止传播。