2019-01-07 Eventproxy trigger事件详解

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便于我们理解代码

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容