⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 base.js

📁 Ajax下日志框架
💻 JS
📖 第 1 页 / 共 3 页
字号:
        var compareKeys = m.extend(null, arguments);        return function (a, b) {            var rval = 0;            // keep comparing until something is inequal or we run out of            // keys to compare            for (var i = 0; (rval === 0) && (i < compareKeys.length); i++) {                var key = compareKeys[i];                rval = compare(a[key], b[key]);            }            return rval;        };    },    reverseKeyComparator: function (key) {        var comparator = MochiKit.Base.keyComparator.apply(this, arguments);        return function (a, b) {            return comparator(b, a);        };    },    partial: function (func) {        var m = MochiKit.Base;        return m.bind.apply(this, m.extend([func, undefined], arguments, 1));    },         listMinMax: function (which, lst) {        if (lst.length === 0) {            return null;        }        var cur = lst[0];        var compare = MochiKit.Base.compare;        for (var i = 1; i < lst.length; i++) {            var o = lst[i];            if (compare(o, cur) == which) {                cur = o;            }        }        return cur;    },    objMax: function (/* obj... */) {        return MochiKit.Base.listMinMax(1, arguments);    },                objMin: function (/* obj... */) {        return MochiKit.Base.listMinMax(-1, arguments);    },    findIdentical: function (lst, value, start/* = 0 */, /* optional */end) {        if (typeof(end) == "undefined" || end === null) {            end = lst.length;        }        for (var i = (start || 0); i < end; i++) {            if (lst[i] === value) {                return i;            }        }        return -1;    },    findValue: function (lst, value, start/* = 0 */, /* optional */end) {        if (typeof(end) == "undefined" || end === null) {            end = lst.length;        }        var cmp = MochiKit.Base.compare;        for (var i = (start || 0); i < end; i++) {            if (cmp(lst[i], value) === 0) {                return i;            }        }        return -1;    },        nodeWalk: function (node, visitor) {        var nodes = [node];        var extend = MochiKit.Base.extend;        while (nodes.length) {            var res = visitor(nodes.shift());            if (res) {                extend(nodes, res);            }        }    },           nameFunctions: function (namespace) {        var base = namespace.NAME;        if (typeof(base) == 'undefined') {            base = '';        } else {            base = base + '.';        }        for (var name in namespace) {            var o = namespace[name];            if (typeof(o) == 'function' && typeof(o.NAME) == 'undefined') {                try {                    o.NAME = base + name;                } catch (e) {                    // pass                }            }        }    },    queryString: function (names, values) {        // check to see if names is a string or a DOM element, and if        // MochiKit.DOM is available.  If so, drop it like it's a form        // Ugliest conditional in MochiKit?  Probably!        if (typeof(MochiKit.DOM) != "undefined" && arguments.length == 1            && (typeof(names) == "string" || (                typeof(names.nodeType) != "undefined" && names.nodeType > 0            ))        ) {            var kv = MochiKit.DOM.formContents(names);            names = kv[0];            values = kv[1];        } else if (arguments.length == 1) {            var o = names;            names = [];            values = [];            for (var k in o) {                var v = o[k];                if (typeof(v) != "function") {                    names.push(k);                    values.push(v);                }            }        }        var rval = [];        var len = Math.min(names.length, values.length);        var urlEncode = MochiKit.Base.urlEncode;        for (var i = 0; i < len; i++) {            v = values[i];            if (typeof(v) != 'undefined' && v !== null) {                rval.push(urlEncode(names[i]) + "=" + urlEncode(v));            }        }        return rval.join("&");    },    parseQueryString: function (encodedString, useArrays) {        var pairs = encodedString.replace(/\+/g, "%20").split("&");        var o = {};        var decode;        if (typeof(decodeURIComponent) != "undefined") {            decode = decodeURIComponent;        } else {            decode = unescape;        }        if (useArrays) {            for (var i = 0; i < pairs.length; i++) {                var pair = pairs[i].split("=");                var name = decode(pair[0]);                var arr = o[name];                if (!(arr instanceof Array)) {                    arr = [];                    o[name] = arr;                }                arr.push(decode(pair[1]));            }        } else {            for (i = 0; i < pairs.length; i++) {                pair = pairs[i].split("=");                o[decode(pair[0])] = decode(pair[1]);            }        }        return o;    }});    MochiKit.Base.AdapterRegistry = function () {    this.pairs = [];};MochiKit.Base.AdapterRegistry.prototype = {    register: function (name, check, wrap, /* optional */ override) {        if (override) {            this.pairs.unshift([name, check, wrap]);        } else {            this.pairs.push([name, check, wrap]);        }    },    match: function (/* ... */) {        for (var i = 0; i < this.pairs.length; i++) {            var pair = this.pairs[i];            if (pair[1].apply(this, arguments)) {                return pair[2].apply(this, arguments);            }        }        throw MochiKit.Base.NotFound;    },    unregister: function (name) {        for (var i = 0; i < this.pairs.length; i++) {            var pair = this.pairs[i];            if (pair[0] == name) {                this.pairs.splice(i, 1);                return true;            }        }        return false;    }};MochiKit.Base.EXPORT = [    "counter",    "clone",    "extend",    "update",    "updatetree",    "setdefault",    "keys",    "items",    "NamedError",    "operator",    "forwardCall",    "itemgetter",    "typeMatcher",    "isCallable",    "isUndefined",    "isUndefinedOrNull",    "isNull",    "isEmpty",    "isNotEmpty",    "isArrayLike",    "isDateLike",    "xmap",    "map",    "xfilter",    "filter",    "bind",    "bindMethods",    "NotFound",    "AdapterRegistry",    "registerComparator",    "compare",    "registerRepr",    "repr",    "objEqual",    "arrayEqual",    "concat",    "keyComparator",    "reverseKeyComparator",    "partial",    "merge",    "listMinMax",    "listMax",    "listMin",    "objMax",    "objMin",    "nodeWalk",    "zip",    "urlEncode",    "queryString",    "serializeJSON",    "registerJSON",    "evalJSON",    "parseQueryString",    "findValue",    "findIdentical",    "flattenArguments",    "method"];MochiKit.Base.EXPORT_OK = [    "nameFunctions",    "comparatorRegistry",    "reprRegistry",    "jsonRegistry",    "compareDateLike",    "compareArrayLike",    "reprArrayLike",    "reprString",    "reprNumber"];MochiKit.Base._exportSymbols = function (globals, module) {    if (typeof(MochiKit.__export__) == "undefined") {        MochiKit.__export__ = (MochiKit.__compat__  ||            (typeof(JSAN) == 'undefined' && typeof(dojo) == 'undefined')        );    }    if (!MochiKit.__export__) {        return;    }    var all = module.EXPORT_TAGS[":all"];    for (var i = 0; i < all.length; i++) {        globals[all[i]] = module[all[i]];    }};MochiKit.Base.__new__ = function () {    // A singleton raised when no suitable adapter is found    var m = this;    // Backwards compat    m.forward = m.forwardCall;    m.find = m.findValue;    if (typeof(encodeURIComponent) != "undefined") {        m.urlEncode = function (unencoded) {            return encodeURIComponent(unencoded).replace(/\'/g, '%27');        };    } else {        m.urlEncode = function (unencoded) {            return escape(unencoded                ).replace(/\+/g, '%2B'                ).replace(/\"/g,'%22'                ).rval.replace(/\'/g, '%27');        };    }    m.NamedError = function (name) {        this.message = name;        this.name = name;    };    m.NamedError.prototype = new Error();    m.update(m.NamedError.prototype, {        repr: function () {            if (this.message && this.message != this.name) {                return this.name + "(" + m.repr(this.message) + ")";            } else {                return this.name + "()";            }        },        toString: m.forwardCall("repr")    });    m.NotFound = new m.NamedError("MochiKit.Base.NotFound");    m.listMax = m.partial(m.listMinMax, 1);    m.listMin = m.partial(m.listMinMax, -1);    m.isCallable = m.typeMatcher('function');    m.isUndefined = m.typeMatcher('undefined');    m.merge = m.partial(m.update, null);    m.zip = m.partial(m.map, null);    m.comparatorRegistry = new m.AdapterRegistry();    m.registerComparator("dateLike", m.isDateLike, m.compareDateLike);    m.registerComparator("arrayLike", m.isArrayLike, m.compareArrayLike);    m.reprRegistry = new m.AdapterRegistry();    m.registerRepr("arrayLike", m.isArrayLike, m.reprArrayLike);    m.registerRepr("string", m.typeMatcher("string"), m.reprString);    m.registerRepr("numbers", m.typeMatcher("number", "boolean"), m.reprNumber);    m.jsonRegistry = new m.AdapterRegistry();    var all = m.concat(m.EXPORT, m.EXPORT_OK);    m.EXPORT_TAGS = {        ":common": m.concat(m.EXPORT_OK),        ":all": all    };    m.nameFunctions(this);};MochiKit.Base.__new__();//// XXX: Internet Explorer blows//if (!MochiKit.__compat__) {    compare = MochiKit.Base.compare;}MochiKit.Base._exportSymbols(this, MochiKit.Base);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -