5 Comments

  1. 竟然还画图讲解 拜服
    第二个图fireIndex写错了

    unique: 每个回调只会触发一次
    //这里看不懂的 看源码才知道是每个回调只能添加一次,队列里没有重复的回调,

    //把args组织成 [context, arg1, arg2, arg3, ...]可以看到第一个参数是上下文
    应该是组织成 [context, [arg1, arg2, arg3, ...]]吧?

    确实想不清self的方法不写到prototype节省空间,可能因为那样就要把所有变量memory fired等都弄成实例变量,写起来比较麻烦

    • 1.图画错了,先这个样子吧哈
      2.已修改unique的描述
      3.你是对的,args这里描述有误。已经修改了
      4.后来想想也只有这个原因了,不要老是挂在当前实例下边,而且那样也会把字段暴漏出去,所以干脆就闭包解决了。不过其实要解决还是可以的,内部定义辅助函数挂在Callbacks的prototype下,暴漏的接口通过call或者apply方法做个委托代理,把self当做上下文即可。不过好像也没有减少function占用的内存。

  2. 几个地方注释有错误,改了一下。

    92~110行

    if ( stack ) {//不是 "once" 的情况。
    ...
    } else if ( memory ) {//"once memory" ,或者 "memory" 情况下 lock 过。
    ...
    } else {// "once"

    153行

    } else if ( memory ) {
    //如果已经fire过并且是memory类型的管理器
    //memory 在这里是上一次 fire 的 [context, args]

发表评论

电子邮件地址不会被公开。


6 + 2 =

您也可以使用微博账号登陆