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

📄 base.js

📁 Ajax下日志框架
💻 JS
📖 第 1 页 / 共 3 页
字号:
            rval = [];            for (i = 0; i < length; i++) {                var args = [];                for (var j = 1; j < arguments.length; j++) {                    args.push(arguments[j][i]);                }                rval.push(fn.apply(this, args));            }            return rval;        }    },    xfilter: function (fn/*, obj... */) {        var rval = [];        if (fn === null) {            fn = MochiKit.Base.operator.truth;        }        for (var i = 1; i < arguments.length; i++) {            var o = arguments[i];            if (fn(o)) {                rval.push(o);            }        }        return rval;    },    filter: function (fn, lst, self) {        var rval = [];        // allow an iterable to be passed        var m = MochiKit.Base;        if (!m.isArrayLike(lst)) {            if (MochiKit.Iter) {                lst = MochiKit.Iter.list(lst);            } else {                throw new TypeError("Argument not an array-like and MochiKit.Iter not present");            }        }        if (fn === null) {            fn = m.operator.truth;        }        if (typeof(Array.prototype.filter) == 'function') {            // Mozilla fast-path            return Array.prototype.filter.call(lst, fn, self);        } else if (typeof(self) == 'undefined' || self === null) {            for (var i = 0; i < lst.length; i++) {                var o = lst[i];                if (fn(o)) {                    rval.push(o);                }            }        } else {            for (i = 0; i < lst.length; i++) {                o = lst[i];                if (fn.call(self, o)) {                    rval.push(o);                }            }        }        return rval;    },    _wrapDumbFunction: function (func) {        return function () {            // fast path!            switch (arguments.length) {                case 0: return func();                case 1: return func(arguments[0]);                case 2: return func(arguments[0], arguments[1]);                case 3: return func(arguments[0], arguments[1], arguments[2]);            }            var args = [];            for (var i = 0; i < arguments.length; i++) {                args.push("arguments[" + i + "]");            }            return eval("(func(" + args.join(",") + "))");        };    },                method: function (self, func) {        var m = MochiKit.Base;        return m.bind.apply(this, m.extend([func, self], arguments, 2));    },    bind: function (func, self/* args... */) {        if (typeof(func) == "string") {            func = self[func];        }        var im_func = func.im_func;        var im_preargs = func.im_preargs;        var im_self = func.im_self;        var m = MochiKit.Base;        if (typeof(func) == "function" && typeof(func.apply) == "undefined") {            // this is for cases where JavaScript sucks ass and gives you a            // really dumb built-in function like alert() that doesn't have            // an apply            func = m._wrapDumbFunction(func);        }        if (typeof(im_func) != 'function') {            im_func = func;        }        if (typeof(self) != 'undefined') {            im_self = self;        }        if (typeof(im_preargs) == 'undefined') {            im_preargs = [];        } else  {            im_preargs = im_preargs.slice();        }        m.extend(im_preargs, arguments, 2);        var newfunc = function () {            var args = arguments;            var me = arguments.callee;            if (me.im_preargs.length > 0) {                args = m.concat(me.im_preargs, args);            }            var self = me.im_self;            if (!self) {                self = this;            }            return me.im_func.apply(self, args);        };        newfunc.im_self = im_self;        newfunc.im_func = im_func;        newfunc.im_preargs = im_preargs;        return newfunc;    },    bindMethods: function (self) {        var bind = MochiKit.Base.bind;        for (var k in self) {            var func = self[k];            if (typeof(func) == 'function') {                self[k] = bind(func, self);            }        }    },    registerComparator: function (name, check, comparator, /* optional */ override) {        MochiKit.Base.comparatorRegistry.register(name, check, comparator, override);    },    _primitives: {'boolean': true, 'string': true, 'number': true},    compare: function (a, b) {        if (a == b) {            return 0;        }        var aIsNull = (typeof(a) == 'undefined' || a === null);        var bIsNull = (typeof(b) == 'undefined' || b === null);        if (aIsNull && bIsNull) {            return 0;        } else if (aIsNull) {            return -1;        } else if (bIsNull) {            return 1;        }        var m = MochiKit.Base;        // bool, number, string have meaningful comparisons        var prim = m._primitives;        if (!(typeof(a) in prim && typeof(b) in prim)) {            try {                return m.comparatorRegistry.match(a, b);            } catch (e) {                if (e != m.NotFound) {                    throw e;                }            }        }        if (a < b) {            return -1;        } else if (a > b) {            return 1;        }        // These types can't be compared        var repr = m.repr;        throw new TypeError(repr(a) + " and " + repr(b) + " can not be compared");    },    compareDateLike: function (a, b) {        return MochiKit.Base.compare(a.getTime(), b.getTime());    },    compareArrayLike: function (a, b) {        var compare = MochiKit.Base.compare;        var count = a.length;        var rval = 0;        if (count > b.length) {            rval = 1;            count = b.length;        } else if (count < b.length) {            rval = -1;        }        for (var i = 0; i < count; i++) {            var cmp = compare(a[i], b[i]);            if (cmp) {                return cmp;            }        }        return rval;    },    registerRepr: function (name, check, wrap, /* optional */override) {        MochiKit.Base.reprRegistry.register(name, check, wrap, override);    },    repr: function (o) {        if (typeof(o) == "undefined") {            return "undefined";        } else if (o === null) {            return "null";        }        try {            if (typeof(o.__repr__) == 'function') {                return o.__repr__();            } else if (typeof(o.repr) == 'function' && o.repr != arguments.callee) {                return o.repr();            }            return MochiKit.Base.reprRegistry.match(o);        } catch (e) {            if (typeof(o.NAME) == 'string' && (                    o.toString == Function.prototype.toString ||                    o.toString == Object.prototype.toString                )) {                return o.NAME;            }        }        try {            var ostring = (o + "");        } catch (e) {            return "[" + typeof(o) + "]";        }        if (typeof(o) == "function") {            o = ostring.replace(/^\s+/, "");            var idx = o.indexOf("{");            if (idx != -1) {                o = o.substr(0, idx) + "{...}";            }        }        return ostring;    },    reprArrayLike: function (o) {        var m = MochiKit.Base;        return "[" + m.map(m.repr, o).join(", ") + "]";    },    reprString: function (o) {         return ('"' + o.replace(/(["\\])/g, '\\$1') + '"'            ).replace(/[\f]/g, "\\f"            ).replace(/[\b]/g, "\\b"            ).replace(/[\n]/g, "\\n"            ).replace(/[\t]/g, "\\t"            ).replace(/[\r]/g, "\\r");    },    reprNumber: function (o) {        return o + "";    },    registerJSON: function (name, check, wrap, /* optional */override) {        MochiKit.Base.jsonRegistry.register(name, check, wrap, override);    },    evalJSON: function () {        return eval("(" + arguments[0] + ")");    },    serializeJSON: function (o) {        var objtype = typeof(o);        if (objtype == "undefined") {            return "undefined";        } else if (objtype == "number" || objtype == "boolean") {            return o + "";        } else if (o === null) {            return "null";        }        var m = MochiKit.Base;        var reprString = m.reprString;        if (objtype == "string") {            return reprString(o);        }        // recurse        var me = arguments.callee;        // short-circuit for objects that support "json" serialization        // if they return "self" then just pass-through...        var newObj;        if (typeof(o.__json__) == "function") {            newObj = o.__json__();            if (o !== newObj) {                return me(newObj);            }        }        if (typeof(o.json) == "function") {            newObj = o.json();            if (o !== newObj) {                return me(newObj);            }        }        // array        if (objtype != "function" && typeof(o.length) == "number") {            var res = [];            for (var i = 0; i < o.length; i++) {                var val = me(o[i]);                if (typeof(val) != "string") {                    val = "undefined";                }                res.push(val);            }            return "[" + res.join(", ") + "]";        }        // look in the registry        try {            newObj = m.jsonRegistry.match(o);            return me(newObj);        } catch (e) {            if (e != m.NotFound) {                // something really bad happened                throw e;            }        }        // it's a function with no adapter, bad        if (objtype == "function") {            return null;        }        // generic object code path        res = [];        for (var k in o) {            var useKey;            if (typeof(k) == "number") {                useKey = '"' + k + '"';            } else if (typeof(k) == "string") {                useKey = reprString(k);            } else {                // skip non-string or number keys                continue;            }            val = me(o[k]);            if (typeof(val) != "string") {                // skip non-serializable values                continue;            }            res.push(useKey + ":" + val);        }        return "{" + res.join(", ") + "}";    },                objEqual: function (a, b) {        return (MochiKit.Base.compare(a, b) === 0);    },    arrayEqual: function (self, arr) {        if (self.length != arr.length) {            return false;        }        return (MochiKit.Base.compare(self, arr) === 0);    },    concat: function (/* lst... */) {        var rval = [];        var extend = MochiKit.Base.extend;        for (var i = 0; i < arguments.length; i++) {            extend(rval, arguments[i]);        }        return rval;    },    keyComparator: function (key/* ... */) {        // fast-path for single key comparisons        var m = MochiKit.Base;        var compare = m.compare;        if (arguments.length == 1) {            return function (a, b) {                return compare(a[key], b[key]);            };        }

⌨️ 快捷键说明

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