gpt4 book ai didi

javascript - 将事件附加到事件发射器和从中移除事件

转载 作者:行者123 更新时间:2023-11-29 21:26:13 25 4
gpt4 key购买 nike

我正在编写自己的事件发射器。之前写过一些,但是我想写一个像Node和其他系统一样的onoff风格的。我一直在努力理解如何使用 off 来移除事件发射器的监听器。这是因为调用 on 时,我看不到如何为该监听器提供或生成唯一的 id

事件系统

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

最佳答案

您是否正在尝试像 Jquery 中那样实现命名空间功能?如下图

    $("#element").on("click.myNamespace", function() { 
console.log("doSomething");
});

$("#element").off("click.myNamespace");

关于javascript - 将事件附加到事件发射器和从中移除事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37364850/

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