use*_*291 7 javascript dom-events
在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
});
};
}
Run Code Online (Sandbox Code Playgroud)
演示在这里: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))
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1821 次 |
| 最近记录: |