jQuery源码分析之Callbacks详解

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

    *                     auto – 自动执行模型:每添加一个回调函数,自动执行现有的回调函数集合里的所有回调函数,并将本次的参数传递给所有的回调函数
    *
    */

    //工具函数
    var isIndexOf = Array.prototype.indexOf,    //Es6
        toString = Object.prototype.toString,   //缓存toString方法
        toSlice = Array.prototype.slice,        //缓存slice方法
        isFunction = (function () {             //判定一个对象是否是Function
            return “object” === typeof document.getElementById ?
            isFunction = function (fn) {
                //ie下对DOM和BOM的识别有问题
                try {
                    return /^s*bfunctionb/.test(“” + fn);
                } catch (x) {
                    return false
                }
            } :
            isFunction = function (fn) { return toString.call(fn) === ‘[object Function]’; };
        })(),
        each = function () {                    //循环遍历方法
            //第一个参数表示要循环的数组,第二个参数是每次循环执行的函数
            if (arguments.length < 2 || !isFunction(arguments[1])) return;
            //为什么slice无效??
            var list = toSlice.call(arguments[0]),
                fn = arguments[1],