callbacks源码

(function (root) {
    var optionsCache = {};
    var _ = {
        callbacks: function (options) {
            options = typeof options === "string" ? (optionsCache[options] || createOptions(options)) : {};
            //将options变成对象;
            var list = [];//存储回调函数的参数;
            var index,length,testting,memory,start,starts ;
            memory = options.memory && data;


			var fire = function(data){
				
                index = starts||0;//先赋值给index;
                
                start = 0;//start归零;
                
				testting = true;//对应once;只能修改一次;
				length = list.length;
				for(;index < length;index++){
					if(list[index].apply(data[0], data[1]) === false  && options.stopOnfalse){
						break;
					}
				}
			}
            var self={
                add:function(){
                    var args = Array.prototype.slice.call(arguments);
                    start = list.length;//再次添加之前,list长度;
                    args.forEach(function(fn){
						if(toString.call(fn) ==="[object Function]"){
							list.push(fn);
						}
					});

					if(memory){
                        starts = start;
                        fire(memory);	
                       }



                },
                fireWith:function(){
					var args = [context, arguments];
				
                    if(!options.once || !testting){//options.once为true;!options.once为false; !testting !(undefined)
                        fire(args);
                       }
					
                },
                fire:function(){
                    self.fireWith(this, arguments);
                }

            }

        }
    }


    function createOptions(options) {
        var object = {};
        options.split(/\s+/).forEach(element => {
            object[element] = true;

        });
        return object;

    }

root._=_

})(window)

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值