我正在关注使用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/
在调试期间,我验证了使用此模式调用事件,如上面的小提琴所示。
答案 0 :(得分:1)
将data
作为listeners[i].call(this, event, data)
然后在你的听众中做:
o.onDataEvent("foo", function(event, data){
console.log(data);
});