在.NET中,您可以將多個處理程序添加到對象聲明爲事件的事件中。非DOM對象的JavaScript事件處理(註冊多個處理程序)
在JavaScript中處理非DOM對象的推薦方式是什麼?
即我有一個對象:
var ProblemDomainObj = {} ;
ProblemDomainObj.Changed = function() {} ;
ProblemDomainObj.Data = { somedata : "initialized" } ;
ProblemDomainObj.Operate = function (newdata) {
if (newdata != somedata && ProblemDomainObj.IsValid(newdata)) {
somedata = newdata;
ProblemDomainObj.Changed();
}
} ;
現在其他對象可能要註冊到知道數據已發生變化,每個想要做這樣的事情:
ProblemDomainObj.Changed += function() {
/* Do stuff to reflect the object model changes */
} ;
如果每個獲得註冊他們的處理程序而不覆蓋另一個。
然後一些對象會調用ProblemDomainObj.Operate(foo);
,所有已訂閱的人都會收到通知。
我在jQuery中找到了http://api.jquery.com/on/的文檔,但它似乎與像onclick這樣的DOM事件有關。這些都不一定與DOM有關。
你寫C#中的JavaScript。您可能想要退後一步並完全學習JavaScript – Raynos
@Raynos JavaScript中是否存在原生習慣,否定了訂閱對象事件的需要,以便您可以將組件解耦以瞭解其他組件,以瞭解想要了解有關它們引發的事件的其他組件? –
不,但寫一個是10行,如圖所示 – Raynos