独书先生 Menu

精确判断js对象类型的方法

1.区别数组还是对象

var arr = [1, 2, 3];

var obj = {“a”: 3, “b”: 4};

判断数组:typeof arr  == “object” && arr.length != undefined

或者arr instanceof Array == true

注意 :arr instanceof Object == true所以instanceof和typeof一样不能单独使用来判断对象

判断对象:typeof obj== “object” && obj.length == undefined

原理:(1) 数组和对象使用typeof都是object

(2) 对象没有长度

 

2.判断数据类型:

编写数据类型判断的通用函数

function getType(obj){
var toString = Object.prototype.toString;
var map = {
'[object Boolean]' : 'boolean',
'[object Number]' : 'number',
'[object String]' : 'string',
'[object Function]' : 'function',
'[object Array]' : 'array',
'[object Date]' : 'date',
'[object RegExp]' : 'regExp',
'[object Undefined]': 'undefined',
'[object Null]' : 'null',
'[object Object]' : 'object'
};
if(obj instanceof Element) {
return 'element';
}
return map[toString.call(obj)];
}

引用自:sysuzhyupeng 感谢!