如何通过EventTarget原型将数据传递给自定义事件?

时间:2018-02-02 17:25:46

标签: javascript event-handling custom-events

我正在关注使用EventTarget原型创建自定义事件的blog post。在我的情况下,需要修改此EventTarget对象以将data返回给onDataEvent侦听器:

o.onDataEvent("foo", function(data){
    var dataRetrieved = data.message; //retrieve data object passed to fire function
    console.log(dataRetrieved); //undefined
    alert("Foo just happened.");
});

所以我在JSFiddle中基于this blog post制作了一个要点,其中我重写了调度事件的EventTarget.fire函数,接受 data 的第二个参数。

还修改了onDataEvent签名以包含数据参数。这里的想法是,除了调用event("foo")之外,我还会向事件返回一些数据。

我知道该事件是通过listeners[i].call(this, event);调用的。但我不清楚如何在.call中传回数据。

问题:

如何通过EventTarget原型将数据传递给自定义事件?

这是该代码的要点:https://jsfiddle.net/hLj7yxw9/8/

在调试期间,我验证了使用此模式调用事件,如上面的小提琴所示。

1 个答案:

答案 0 :(得分:1)

data作为listeners[i].call(this, event, data)

传递

然后在你的听众中做:

o.onDataEvent("foo", function(event, data){
    console.log(data);
});

https://jsfiddle.net/hLj7yxw9/9/