我想做些类似的工作:
var Events=require('events'), test=new Events.EventEmitter, scope={ prop:true }; test.on('event',function() { console.log(this.prop===true);//would log true }); test.emit.call(scope,'event');
但是,不幸的是,听众甚至没有得到呼叫。有EventEmitter有什么办法吗?我可以Function.bind听一下,但是,我真的希望EventEmitter有一些特殊的(或显而易见的)方法可以做到这一点…
Function.bind
EventEmitter
谢谢您的帮助!
否,因为this侦听器中的值是事件发射器对象。
this
但是,您可以做的是
var scope = { ... }; scope._events = test._events; test.emit.call(scope, ...);
未调用事件处理程序的原因是因为所有处理程序都存储在其中,._events因此如果._events在其上进行复制应该可以工作。
._events