美文网首页
2019-01-07 Eventproxy trigger事件详

2019-01-07 Eventproxy trigger事件详

作者: rub1cky | 来源:发表于2019-01-07 22:40 被阅读0次

    eventproxy就是事件订阅发布的实现,其中trigger函数理解需要自己仔细阅读一下。

    Eventproxy.prototype.trigger = function(name, data) {
        var list, callback, i, l;
        var both = 2; // 用来区分两种情况,一种是自定义事件,一种是全局事件
        var calls = this._callbacks;
        while (both--) {
            ev = both ? name : ALL_EVENT;
            list = calls[ev];
            console.log(ev)
            if(!list) continue;
    
            for(i = 0, l = list.length; i < l; i++) {
                if(!(callback = list[i])) {
                    list.splice(i,1);
                    i--;
                    l--;
                }else{
                    // arguments 赋值
                    var args = [];
                    var start = both ? 1 : 0;
                    for(var j = start; j < arguments.length; j++) {
                        args.push(arguments[j]);
                    }
    
                    callback.apply(this, args);
                }
            }
        }
        return this;
    };
    

    both 在源代码中没有说明,仔细阅读过后是两种情况的分类,就是分别遍历自定义事件的数组和全局事件的数组中满足相等的函数,进行触发

    var start = both ? 1 : 0;
    var args = [].slice.apply(arguments)
    callback.apply(this, args.slice(start));
    

    其中args 赋值部分其他实现,源代码部分兼容性更好

    用好编辑器的js debug便于我们理解代码

    相关文章

      网友评论

          本文标题:2019-01-07 Eventproxy trigger事件详

          本文链接:https://www.haomeiwen.com/subject/ajqmrqtx.html