讨论:Qomolangma实现篇(四):基本特性增强与多投事件系统

http://blog.csdn.net/aimingoo/archive/2006/03/07/617363.aspx

不修改Object()对象原型”,我还是比较赞同这个的,因为这样可以避免影响到 for in 的惯用法。假如框架的一个目标是尽量能兼容已有的代码,则这个规定是必要的。不过这样也限制了一些能力。有一种折中的方案,是我从Dean的ICommon认识到的,即可定义一个新的类作为基类。反正要改变用户习惯,则连基类都一并修改也无妨。

关于format,个人不喜欢%n或者$n的format方案,而更喜欢${xxx}或者{$xxx}的动态字符串方案。这个基本上属于编程背景和个人喜好问题,除了后者可以使用名字而不受顺序的影响(单纯数字容易造成bug)这个小优点。

此外,我觉得最好不要增加format为全局函数,因为format这个词太常用,容易造成冲突。我认为可以仿效js 1.6(moz所实现的)中Array和String的generics,增加String.format()静态方法。

关于addMethod,我建议是不是可以把add方法修改为add(handler, thisObj),即addMethod的两个参数顺序颠倒一下,并且将后者作为可选参数。moz下js1.6的新增的一些方法就是如此。若是嫌addMethod方法多余,去掉也可,或者也可提供多一种选择,保留该方法。

reset(x)方法我觉得是多余的。仅仅提供一个clear(); add(x)的缩写似乎不太经济。

close()的设计目的我理解是类似于java中的final,禁止override。个人认为,假如要提供这样的功能,应该在体系中以更加一般化的形式体现,即不仅对于事件(禁止增加句柄),而且对于方法(禁止override),甚至对于类(禁止继承)。另外,建议把方法改名为seal()。

关于del,首先俺更prefer的方法名字是remove而不是del。其次,“能导致事件的激活顺序被破坏”不知道是什么意思。如果是指多个事件句柄的执行顺序,我认为不应考虑。我看到的多数事件体系都不保证多个句柄的先后顺序。“del()需要执有内部“事件句柄列表”中的事件方法的引用,这破坏了封装性”,这一句不明白。

关于强壮的MuEvent。。。我觉得这部分考虑的太多了,从而造成引入了一些额外的复杂性。使用valueOf的想法是好的,但是在moz上可能存在问题。这部分晚点在作讨论。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值