CNode

Event模块监听者鸡肋

Ssynelang发布于14 年前最后回复14 年前7 回复5659 浏览0 收藏

Event模块的监听者只能是function,在面向对象方面鸡肋的很,只能用函数,大家有没有好的解决方案?

查看回复

回复 (7)

J
JacksonTian#2·14 年前

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

F
fengmk2#3·14 年前
K
kaven276#4·14 年前

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

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

看来您练 OO 走火入魔了。

L
leizongmin#6·14 年前

不明白具体是神马意思?遇到神马问题了?求详解。。。

Z
zxc122333#7·14 年前

第一个方案,利用闭包,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

参与回复
登录后即可参与回复。登录