Event模块的监听者只能是function,在面向对象方面鸡肋的很,只能用函数,大家有没有好的解决方案?
7 回复
第一个方案,利用闭包,like this var self=this; events.addListener("show",function(){console.log(self)}); 这样写的话,可以保留添加监听器的对象,当然,你也可以保留其他的
第二个方案,利用bind,like this function listener(){console.log(this)}; listener.bind(this); events.addListener("show",listener); 这样,当listener执行的时候,this就会指向添加时的zhis了,一样的,你可以bind其他对象。不过我不能保证这样写会不会出什么问题,因为从源码里能看到,emit的执行是这样的: handler.apply(this, args);
第三个方案,自己写一个EventEmitter,可以模仿c#的形式,搞一个简单的Observer