我正在编写自己的事件发射器。我之前写了一些,但我想写一个像on
和off
样式的节点和其他系统。我一直试图理解如何使用off
删除事件发射器的监听器。这是因为在调用on
时,我不知道如何为此侦听器提供或生成唯一的id
。
的EventSystem
class EventSystem {
constructor(sender){
this.sender = sender;
this.events = {};
return this;
}
create(name){
return this.events[name] = { callbacks : [] };
}
on(name, callback){
var event = this.events[name];
if(!isDefined(event))
event = this.create(name);
event.callbacks.push(callback);
}
off(name){
}
emit(){
var event = this.events[arguments[0]];
if(isDefined(event)){
var args = arguments.slice(1, arguments.length);
for(var i = 0; i < event.callbacks.length; i++){
event.callbacks[i](this.sender, args);
}
}
}
}
某些课程
class Foo {
constructor(){
this.evs = new EventSystem(this);
return this;
}
do(){
this.evs.emit('do', arg1, arg2, arg3);
}
}
var foo = new Foo();
foo.on('do', function(sender, arg1, arg2){
console.log(arg1);
});
foo.do();
foo.off('do');
如何在使用.on
时指定某种ID,以便我可以使用.off
?
答案 0 :(得分:2)
您是否尝试在Jquery中实现名称空间功能?如下所示
$("#element").on("click.myNamespace", function() {
console.log("doSomething");
});
$("#element").off("click.myNamespace");