gpt4 book ai didi

javascript - 自定义事件(观察者模式)

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:57:55 27 4
gpt4 key购买 nike

我找不到如何实现这个(我为自由泳记录道歉):

//assign the event handler for the object "myObj"     
myObj.onMyEvent = //do something

//if something happened somewhere, then run the event
MyEvent.fire();

我们的想法是调用(生成)一些自定义事件 (MyEvent)。我们有一个对象“myObj”,它能够识别“MyEvent”的发生并以某种方式(以他自己的方式)对其做出响应。此外,我们还有其他对象(不同种类)(以它们自己的方式)对“MyEvent”作出 react 。

我知道有“观察者模式”,但我找不到具体的实现。

你能告诉我在哪里读到它吗?还是在自然界中一般不可能?或者它的做法完全不同?

更新 1:请不要使用 JS 库(jQuery、Prototype、YUI 等)

最佳答案

no JS libs, please (jQuery, Prototype, YUI, ...)

我会认真地重新考虑这个要求。所有这些库都多次解决了这个或类似的问题。

但是如果你想从头开始,做这样的事情:

window.customEvents = {
handlers : {
foo:[],
bar:[],
baz:[]
},

registerEventHandler:function(event, object, handler){
if(typeof(customEvents.handlers[event])=="undefined")
customEvents.handlers[event]=[];
customEvents.handlers[event].push([object, handler]);
},

fireEvent:function(eventName, data){
if(customEvents.handlers[event]){
for(var i = 0; i < customEvents.handlers[event].length; i++){
var handlerPair = customEvents.handlers[event][i];
handlerPair[1](handlerPair[0], data);
}
}
},

}

用法:

// register event handler
customEvents.registerEventHandler(eventName, targetObject, handlerFunction)

// fire event
customEvents.fireEvent(eventName, data)

// handlerFunction will be passed two parameters: targetObject and event data

关于javascript - 自定义事件(观察者模式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4458712/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com