gpt4 book ai didi

javascript - 如何在 Javascript 中为非 dom 元素添加事件监听器?

转载 作者:数据小太阳 更新时间:2023-10-29 04:41:11 30 4
gpt4 key购买 nike

在 Java、C#、Actionscript 等中。事件是针对类的,而在 Javascript 中,它似乎仅限于 dom。我在这里读了一个用 jQuery 做的例子 http://www.west-wind.com/weblog/posts/2010/May/27/NonDom-Element-Event-Binding-with-jQuery

但是如果我不需要 jQuery 并且我想了解该机制,您会怎么做?

最佳答案

最简单的机制是这样的:

function PubSub() {
this.subs = {};
this.subscribe = function(channel, sub) {
this.subs[channel] = this.subs[channel] || []; //create array for channel
this.subs[channel].push(sub);
};
this.publish = function(channel) {
var args = [].slice.call(arguments, 1); //pop off channel argument
this.subs[channel].forEach(function(sub) {
sub.apply(void 0, args); //call each method listening on the channel
});
};
}

此处演示:http://jsfiddle.net/3PNtR/

-- 编辑(~5 年后)--

同样简单的机制,更新的语法

class PubSub {
constructor () {
this.subs = {}
}
subscribe (channel, sub) {
this.subs[channel] = this.subs[channel] || []
this.subs[channel].push(sub)
}
publish (channel, ...args) {
;(this.subs[channel] || []).forEach(sub => sub(...args))
}
}

关于javascript - 如何在 Javascript 中为非 dom 元素添加事件监听器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6230037/

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