Event模块监听者鸡肋
发布于 12 年前 作者 synelang 4815 次浏览 最后一次编辑是 8 年前

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

你方案很具有启发性。谢谢

同不懂楼主要表达什么意思。

哈哈,bind 传递this,目前connect里面很多地方都是这么干了。

事件处理本来就是要在事件发生时执行动作,当然是绑定函数了。

绑定对象的化,最后还不是一样是执行这个对象上事先规定好的成员函数。

看来您练 OO 走火入魔了。

被iOS的Cocoa框架给影响的。

回到顶部