jquery 3.1 tets

 r.extend = r.fn.extend = function () {
            var a, b, c, d, e, f, g = arguments[0] || {}, h = 1, i = arguments.length, j = !1;
            var head = r.prototype;
            var head0020=typeof r.isFunction;
            if(head0020!='undefined'){
                var  hhhh = 0;
                }
            for ("boolean" == typeof g && (j = g,
            g = arguments[h] || {},
            h++),
            "object" == typeof g || r.isFunction(g) || (g = {}),
            h === i && (g = this,
            h--); h < i; h++)
                if (null != (a = arguments[h]))
                    for (b in a)
                        c = g[b],
                        d = a[b],
                        g !== d && (j && d && (r.isPlainObject(d) || (e = Array.isArray(d))) ? (e ? (e = !1,
                        f = c && Array.isArray(c) ? c : []) : f = c && r.isPlainObject(c) ? c : {},
                        g[b] = r.extend(j, f, d)) : void 0 !== d && (g[b] = d));
            
                        var head = r.prototype;
                        return g
            //*/
        }
    r.extend({ -----------绑定方法 r.prototype 下增加方法
            expando: "jQuery" + (q + Math.random()).replace(/D/g, ""),
            isReady: !0,
            error: function (a) {
                throw new Error(a)
            },
            noop: function () { },
            isFunction: function (a) {
                return "function" === r.type(a)
            },
            isWindow: function (a) {
                return null != a && a === a.window
            },
            isNumeric: function (a) {
                var b = r.type(a);
                return ("number" === b || "string" === b) && !isNaN(a - parseFloat(a))
            },
            isPlainObject: function (a) {
                var b, c;
                return !(!a || "[object Object]" !== k.call(a)) && (!(b = e(a)) || (c = l.call(b, "constructor") && b.constructor,
                    "function" == typeof c && m.call(c) === n))
            },
            isEmptyObject: function (a) {
                var b;
                for (b in a)
                    return !1;
                return !0
            },
            type: function (a) {
                return null == a ? a + "" : "object" == typeof a || "function" == typeof a ? j[k.call(a)] || "object" : typeof a
            },
            globalEval: function (a) {
                p(a)
            },
            camelCase: function (a) {
                return a.replace(t, "ms-").replace(u, v)
            },
            each: function (a, b) {
                var c, d = 0;
                if (w(a)) {
                    for (c = a.length; d < c; d++)
                        if (b.call(a[d], d, a[d]) === !1)
                            break
                } else
                    for (d in a)
                        if (b.call(a[d], d, a[d]) === !1)
                            break;
                return a
            },
            trim: function (a) {
                return null == a ? "" : (a + "").replace(s, "")
            },
            makeArray: function (a, b) {
                var c = b || [];
                return null != a && (w(Object(a)) ? r.merge(c, "string" == typeof a ? [a] : a) : h.call(c, a)),
                    c
            },
            inArray: function (a, b, c) {
                return null == b ? -1 : i.call(b, a, c)
            },
            merge: function (a, b) {
                for (var c = +b.length, d = 0, e = a.length; d < c; d++)
                    a[e++] = b[d];
                return a.length = e,
                    a
            },
            grep: function (a, b, c) {
                for (var d, e = [], f = 0, g = a.length, h = !c; f < g; f++)
                    d = !b(a[f], f),
                        d !== h && e.push(a[f]);
                return e
            },
            map: function (a, b, c) {
                var d, e, f = 0, h = [];
                if (w(a))
                    for (d = a.length; f < d; f++)
                        e = b(a[f], f, c),
                            null != e && h.push(e);
                else
                    for (f in a)
                        e = b(a[f], f, c),
                            null != e && h.push(e);
                return g.apply([], h)
            },
            guid: 1,
            proxy: function (a, b) {
                var c, d, e;
                if ("string" == typeof b && (c = a[b],
                    b = a,
                    a = c),
                    r.isFunction(a))
                    return d = f.call(arguments, 2),
                        e = function () {
                            return a.apply(b || this, d.concat(f.call(arguments)))
                        }
                        ,
                        e.guid = a.guid = a.guid || r.guid++ ,
                        e
            },
            now: Date.now,
            support: o
        }),
        head = r.prototype, //    constructor下无变化 

//第二次增加 属性 或方法

  head = r.prototype; //constructor下无变化 
    r.find = x,
        r.expr = x.selectors,
        r.expr[":"] = r.expr.pseudos,
        r.uniqueSort = r.unique = x.uniqueSort,
        r.text = x.getText,
        r.isXMLDoc = x.isXML,
        r.contains = x.contains,
        r.escapeSelector = x.escape;
    head = r.prototype; // 有变化
原文地址:https://www.cnblogs.com/enych/p/11557711.html