精确判断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 感谢!