Spiga

自制原生js工具库——基础篇

2008-05-05 23:33:45

源码

/**
 * Copyright (c)2008 xiaosuo
 */
/* ******************************************************************* */
/*   UTIL FUNCTIONS                                                    */
/* ******************************************************************* */
var Util = { 'VERSION':1.1 };
​
//获取id
function id(name) {
    return document.getElementById(name);
}
​
//获取指定元素
function tag(name, elem) {
    // 如果不提供上下文元素,则遍历整个文档
    return (elem || document).getElementsByTagName(name);
}
​
//判断对象是否存在
function defined(o) {
    return (typeof (o) != "undefined");
}
​
/* ******************************************************************* */
/*   OBJECT FUNCTIONS                                                  */
/* ******************************************************************* */
var Obj = (function() {
    var object = {};
​
    //检查是否是对象
    object.isObject = function(o) {
        return (o != null && typeof (o) == "object" && defined(o.constructor) && o.constructor == Object && !defined(o.nodeName));
    };
​
    //检查是否是数组
    object.isArray = function(o) {
        return (o != null && typeof (o) == "object" && typeof (o.length) == "number" && (o.length == 0 || defined(o[0])));
    };
​
    //检查是否只包含空格
    object.isBlank = function(val) {
        if (val == null) { return true; }
        for (var i = 0; i < val.length; i++) {
            if ((val.charAt(i) != ' ') && (val.charAt(i) != "\t") && (val.charAt(i) != "\n") && (val.charAt(i) != "\r")) { return false; }
        }
        return true;
    };
​
    //是否是一个字符是数字
    object.isDigit = function(num) {
        if (num.length > 1) { return false; }
        var string = "1234567890";
        if (string.indexOf(num) != -1) { return true; }
        return false;
    };
​
    //检查是否是int类型
    object.isInteger = function(val) {
        if (object.isBlank(val)) { return false; }
        for (var i = 0; i < val.length; i++) {
            if (!isDigit(val.charAt(i))) { return false; }
        }
        return true;
    };
​
    //检查是否是numeric类型
    object.isNumeric = function(val) {
        return (parseFloat(val, 10) == (val * 1));
    };
​
    //复制一个对象
    object.clone = function(obj) {
        if ((typeof (obj) != 'object') || (obj == null)) {
            return obj;
        }
​
        if (obj.length == undefined) {
            var newObj = {};
            for (var i in obj) {
                newObj[i] = object.clone(obj[i]);
            }
        } else {
            var newObj = [];
            for (var i = 0; i < obj.length; i++) {
                newObj[i] = object.clone(obj[i]);
            }
        }
        return newObj;
    };
​
    //设置对象的默认值
    object.setDefaultValues = function(o, values) {
        if (!defined(o) || o == null) {
            o = {};
        }
        if (!defined(values) || values == null) {
            return o;
        }
        for (var val in values) {
            if (!defined(o[val])) {
                o[val] = values[val];
            }
        }
        return o;
    };
​
    return object;
})();
​
/* ******************************************************************* */
/*   STRING FUNCTIONS                                                  */
/* ******************************************************************* */
var Str = (function() {
    var stri = {};
​
    stri.ltrim = function(str) {
        if (str == null) { return null; }
        for (var i = 0; str.charAt(i) == " "; i++);
        return str.substring(i, str.length);
    }
​
    stri.rtrim = function(str) {
        if (str == null) { return null; }
        for (var i = str.length - 1; str.charAt(i) == " "; i--);
        return str.substring(0, i + 1);
    }
​
    stri.trim = function (str) {
        return stri.ltrim(stri.rtrim(str));
    }
​
    stri.ltrimAll = function(str) {
        if (str == null) { return str; }
        for (var i = 0; str.charAt(i) == " " || str.charAt(i) == "\n" || str.charAt(i) == "\t"; i++);
        return str.substring(i, str.length);
    }
​
    stri.rtrimAll = function(str) {
        if (str == null) { return str; }
        for (var i = str.length - 1; str.charAt(i) == " " || str.charAt(i) == "\n" || str.charAt(i) == "\t"; i--);
        return str.substring(0, i + 1);
    }
​
    stri.trimAll = function(str) {
        return stri.ltrimAll(stri.rtrimAll(str));
    }
​
    return stri;
})();
​
/* ******************************************************************* */
/*   ARRAY FUNCTIONS                                                   */
/* ******************************************************************* */
var Arr = (function() {
    var arr = {};
​
    //数组检索
    arr.arraySearch = function(needle, data) {
        for (var i = 0; i < data.length; i++) {
            if (data[i] == needle) {
                return i;
            }
        }
        return undefined;
    };
​
    return arr;
})();

范例

function test_obj()
{
    var a = ["1","2"];
    var b = Obj.clone(a);
    alert(b);
    var c = {};
    alert(Obj.isObject(a));
    c.name = "name";
    alert(Obj.isObject(c));
    alert(Obj.isArray(a));
}
​
function test_setDefaultValues()
{
    var o = {'a':true,'b':10};
    Obj.setDefaultValues(o,{'a':false});
    alert(Obj.setDefaultValues(o,{'a':false}).a);
​
    Obj.setDefaultValues(o,{'b':20});
    alert(Obj.setDefaultValues(o,{'a':false}).b);
​
    Obj.setDefaultValues(o,{'c':'lang'});
    alert(Obj.setDefaultValues(o,{'a':false}).c);
​
    Obj.setDefaultValues(o,null);
    alert(Obj.setDefaultValues(o,{'a':false}).o);
}
​
function test_arraySearch()
{
    var a = ["a","b"];
    alert(Arr.arraySearch("b",a));
    alert(Arr.arraySearch("d",a));
}