jQuery源码分析之Callbacks详解

2020-05-23 06:21:26易采站长站整理

                };
            };
            //注册到window下
            window.Callbacks = Callbacks;
        }(window));

但是在jQuery里采用了更奇妙的用法,获取jQuery作者也自豪这种用法,所以命名这个模型为memory——就是让上面的变量auto不仅仅表示当前是auto执行模式,并且作为最后一次参数的容器,它既表示了auto,也表示了memory。(下面的代码非jQuery是根据jQuery代码思路而写,非源码):


(function (window, undefined) {
            var Callbacks = function (auto) {
                var list = [],
                    fired,
                    memory,//主演在这里,就是memory
                    coreFire = function (data) {
                        //真正的触发函数方法
                        if (list) {
                            //&&表达式妙用
                            memory = auto && data;//记录最后一次的参数,如果不是auto模式则不会记录这个参数
                            //如果是auto模式,那么这个auto将不会为false,它会是一个数组
                            fired = true;
                            for (var i = 0, len = list.length; i < len; i++) {
                                if (list[i].apply(data[0], data[1]) === false)