javascriptの中のタイプは一般的な見解を判断して、1つのツールライブラリを更新します.


javascriptタイプの判断
 js ,        typeof            ,        ,      ,       ,          。             Object toString           , :
var arr = [];
    console.log(typeof arr);//object
    console.log(Object.prototype.toString.call(arr));//[object Array]
Ps:配列に対して、arrのtypeofの後のタイプはObjectであり、これは私達が欲しいのではなく、Objectのtostringの方法で明確にどのタイプかを判断できますが、「Object Aray」という形式は、プログラム内で処理するのによくないので、私達は日常の仕事に簡単な方法をカプセル化してタイプの文字列を返しました.例:
function getType(ele){
    if(!ele)return undefined;
    var type = Object.prototype.toString.call(ele),
    reg = /\[object (.*)\]/,
    arr = reg.exec(type);
    return arr[1];
}
Ps:このようにして文字列形式のタイプを返します.String、Number、Bloolen、Funnction、Aray、Object、undefined、Nullのこれらの文字列を返します.プログラムで判断しやすいです.
タイプ判定プラグインを更新します.
コード
var Type = (function() {
    var Type = function() {
        if (!this instanceof Type) {
            return new Type();
        }
    };

    var menth = {
        version: 'v1.0',
        getType: function(ele) {
            if (window == document && document != window) {
                return 'window';
            } else if (ele.nodeType === 9) {
                return 'document';
            } else if (ele.callee) {
                return 'arguments';
            } else if (isFinite(ele.length) && ele.item) {
                return 'NodeList';
            } else {
                var type = Object.prototype.toString.call(ele),
                    reg = /\[object (.*)\]/,
                    arr = reg.exec(type);
                return arr[1];
            }
        },
        isArray : function(ele){
            return (this.getType(ele) === 'Array') ? true : false;
        },
        isFunction : function(ele){
            return (this.getType(ele) === 'Function') ? true : false;
        },
        isObject : function(ele){
            return (this.getType(ele) === 'Object') ? true : false;
        },
        isString : function(ele){
            return (this.getType(ele) === 'String') ? true : false;
        },
        isNumber : function(ele){
            return (this.getType(ele) === 'Number') ? true : false;
        },
        isBoolen : function(ele){
            return (this.getType(ele) === 'Boolean') ? true : false;
        },
        isUndefined : function(ele){
            return (this.getType(ele) === 'Undefined') ? true : false;
        },
        isNull : function(ele){
            return (this.getType(ele) === 'Null') ? true : false;
        }
    }
    Type = extendDeep(Type.prototype,menth);



    //     
    function extendDeep() {
            var i,
                target = arguments[0] || {},
                astr = '[object Array]',
                toStr = Object.prototype.toString,
                yArr = Array.prototype.slice.call(arguments, 1);
            for (i = 0, len = yArr.length; i < len; i++) {
                var temp = yArr[i];
                for (var j in temp) {
                    if (target.hasOwnProperty(j) && (target[i] === temp[i])) {
                        continue;
                    }
                    if (temp.hasOwnProperty(j)) {
                        if (typeof temp[j] === 'object') {
                            target[j] = (toStr.call(temp[j] === astr)) ? [] : {};
                            extendDeep(target[j], temp[j]);
                        } else {
                            if (typeof temp[j] !== 'undefined') {
                                target[j] = temp[j];
                            }
                        }
                    }
                }
            }

            return target;
        }
console.log(Type)
    return Type;
})();