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

📄 base.js

📁 Ajax下日志框架
💻 JS
📖 第 1 页 / 共 3 页
字号:
/***MochiKit.Base 1.3.1See <http://mochikit.com/> for documentation, downloads, license, etc.(c) 2005 Bob Ippolito.  All rights Reserved.***/if (typeof(dojo) != 'undefined') {    dojo.provide("MochiKit.Base");}if (typeof(MochiKit) == 'undefined') {    MochiKit = {};}if (typeof(MochiKit.Base) == 'undefined') {    MochiKit.Base = {};}MochiKit.Base.VERSION = "1.3.1";MochiKit.Base.NAME = "MochiKit.Base";MochiKit.Base.update = function (self, obj/*, ... */) {    if (self === null) {        self = {};    }    for (var i = 1; i < arguments.length; i++) {        var o = arguments[i];        if (typeof(o) != 'undefined' && o !== null) {            for (var k in o) {                self[k] = o[k];            }        }    }    return self;};MochiKit.Base.update(MochiKit.Base, {    __repr__: function () {        return "[" + this.NAME + " " + this.VERSION + "]";    },    toString: function () {        return this.__repr__();    },    counter: function (n/* = 1 */) {        if (arguments.length === 0) {            n = 1;        }        return function () {            return n++;        };    },            clone: function (obj) {        var me = arguments.callee;        if (arguments.length == 1) {            me.prototype = obj;            return new me();        }    },                flattenArguments: function (lst/* ...*/) {        var res = [];        var m = MochiKit.Base;        var args = m.extend(null, arguments);        while (args.length) {            var o = args.shift();            if (o && typeof(o) == "object" && typeof(o.length) == "number") {                for (var i = o.length - 1; i >= 0; i--) {                    args.unshift(o[i]);                }            } else {                res.push(o);            }        }        return res;    },    extend: function (self, obj, /* optional */skip) {                // Extend an array with an array-like object starting        // from the skip index        if (!skip) {            skip = 0;        }        if (obj) {            // allow iterable fall-through, but skip the full isArrayLike            // check for speed, this is called often.            var l = obj.length;            if (typeof(l) != 'number' /* !isArrayLike(obj) */) {                if (typeof(MochiKit.Iter) != "undefined") {                    obj = MochiKit.Iter.list(obj);                    l = obj.length;                } else {                    throw new TypeError("Argument not an array-like and MochiKit.Iter not present");                }            }            if (!self) {                self = [];            }            for (var i = skip; i < l; i++) {                self.push(obj[i]);            }        }        // This mutates, but it's convenient to return because        // it's often used like a constructor when turning some        // ghetto array-like to a real array        return self;    },    updatetree: function (self, obj/*, ...*/) {        if (self === null) {            self = {};        }        for (var i = 1; i < arguments.length; i++) {            var o = arguments[i];            if (typeof(o) != 'undefined' && o !== null) {                for (var k in o) {                    var v = o[k];                    if (typeof(self[k]) == 'object' && typeof(v) == 'object') {                        arguments.callee(self[k], v);                    } else {                        self[k] = v;                    }                }            }        }        return self;    },    setdefault: function (self, obj/*, ...*/) {        if (self === null) {            self = {};        }        for (var i = 1; i < arguments.length; i++) {            var o = arguments[i];            for (var k in o) {                if (!(k in self)) {                    self[k] = o[k];                }            }        }        return self;    },    keys: function (obj) {        var rval = [];        for (var prop in obj) {            rval.push(prop);        }        return rval;    },            items: function (obj) {        var rval = [];        var e;        for (var prop in obj) {            var v;            try {                v = obj[prop];            } catch (e) {                continue;            }            rval.push([prop, v]);        }        return rval;    },    _newNamedError: function (module, name, func) {        func.prototype = new MochiKit.Base.NamedError(module.NAME + "." + name);        module[name] = func;    },    operator: {        // unary logic operators        truth: function (a) { return !!a; },         lognot: function (a) { return !a; },        identity: function (a) { return a; },        // bitwise unary operators        not: function (a) { return ~a; },        neg: function (a) { return -a; },        // binary operators        add: function (a, b) { return a + b; },        sub: function (a, b) { return a - b; },        div: function (a, b) { return a / b; },        mod: function (a, b) { return a % b; },        mul: function (a, b) { return a * b; },        // bitwise binary operators        and: function (a, b) { return a & b; },        or: function (a, b) { return a | b; },        xor: function (a, b) { return a ^ b; },        lshift: function (a, b) { return a << b; },        rshift: function (a, b) { return a >> b; },        zrshift: function (a, b) { return a >>> b; },        // near-worthless built-in comparators        eq: function (a, b) { return a == b; },        ne: function (a, b) { return a != b; },        gt: function (a, b) { return a > b; },        ge: function (a, b) { return a >= b; },        lt: function (a, b) { return a < b; },        le: function (a, b) { return a <= b; },        // compare comparators        ceq: function (a, b) { return MochiKit.Base.compare(a, b) === 0; },        cne: function (a, b) { return MochiKit.Base.compare(a, b) !== 0; },        cgt: function (a, b) { return MochiKit.Base.compare(a, b) == 1; },        cge: function (a, b) { return MochiKit.Base.compare(a, b) != -1; },        clt: function (a, b) { return MochiKit.Base.compare(a, b) == -1; },        cle: function (a, b) { return MochiKit.Base.compare(a, b) != 1; },        // binary logical operators        logand: function (a, b) { return a && b; },        logor: function (a, b) { return a || b; },        contains: function (a, b) { return b in a; }    },    forwardCall: function (func) {        return function () {            return this[func].apply(this, arguments);        };    },    itemgetter: function (func) {        return function (arg) {            return arg[func];        };    },    typeMatcher: function (/* typ */) {        var types = {};        for (var i = 0; i < arguments.length; i++) {            var typ = arguments[i];            types[typ] = typ;        }        return function () {             for (var i = 0; i < arguments.length; i++) {                if (!(typeof(arguments[i]) in types)) {                    return false;                }            }            return true;        };    },    isNull: function (/* ... */) {        for (var i = 0; i < arguments.length; i++) {            if (arguments[i] !== null) {                return false;            }        }        return true;    },    isUndefinedOrNull: function (/* ... */) {        for (var i = 0; i < arguments.length; i++) {            var o = arguments[i];            if (!(typeof(o) == 'undefined' || o === null)) {                return false;            }        }        return true;    },    isEmpty: function (obj) {        return !MochiKit.Base.isNotEmpty.apply(this, arguments);    },    isNotEmpty: function (obj) {        for (var i = 0; i < arguments.length; i++) {            var o = arguments[i];            if (!(o && o.length)) {                return false;            }        }        return true;    },    isArrayLike: function () {        for (var i = 0; i < arguments.length; i++) {            var o = arguments[i];            var typ = typeof(o);            if (                (typ != 'object' && !(typ == 'function' && typeof(o.item) == 'function')) ||                o === null ||                typeof(o.length) != 'number'            ) {                return false;            }        }        return true;    },    isDateLike: function () {        for (var i = 0; i < arguments.length; i++) {            var o = arguments[i];            if (typeof(o) != "object" || o === null                    || typeof(o.getTime) != 'function') {                return false;            }        }        return true;    },    xmap: function (fn/*, obj... */) {        if (fn === null) {            return MochiKit.Base.extend(null, arguments, 1);        }        var rval = [];        for (var i = 1; i < arguments.length; i++) {            rval.push(fn(arguments[i]));        }        return rval;    },    map: function (fn, lst/*, lst... */) {        var m = MochiKit.Base;        var itr = MochiKit.Iter;        var isArrayLike = m.isArrayLike;        if (arguments.length <= 2) {            // allow an iterable to be passed            if (!isArrayLike(lst)) {                if (itr) {                    // fast path for map(null, iterable)                    lst = itr.list(lst);                    if (fn === null) {                        return lst;                    }                } else {                    throw new TypeError("Argument not an array-like and MochiKit.Iter not present");                }            }            // fast path for map(null, lst)            if (fn === null) {                return m.extend(null, lst);            }            // disabled fast path for map(fn, lst)            /*            if (false && typeof(Array.prototype.map) == 'function') {                // Mozilla fast-path                return Array.prototype.map.call(lst, fn);            }            */            var rval = [];            for (var i = 0; i < lst.length; i++) {                rval.push(fn(lst[i]));            }            return rval;        } else {            // default for map(null, ...) is zip(...)            if (fn === null) {                fn = Array;            }            var length = null;            for (i = 1; i < arguments.length; i++) {                // allow iterables to be passed                if (!isArrayLike(arguments[i])) {                    if (itr) {                        return itr.list(itr.imap.apply(null, arguments));                    } else {                        throw new TypeError("Argument not an array-like and MochiKit.Iter not present");                    }                }                // find the minimum length                var l = arguments[i].length;                if (length === null || length > l) {                    length = l;                }            }

⌨️ 快捷键说明

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