很容易知道,null,数组,object的typeof返回的数据类型都是object。那么如何检测数据是数组类型了。
1. instanceof:用于判断某个变量是否是某个对象的实例。
a instanceof b ? true : false (b为想检测的那种数据类型)
var a = [];
console.log(a instanceof Array) // true
2.constructor :返回对象相对的构造函数
console.log([].constructor == Array) // true
console.log([].constructor == object) //true
3.isArray
function isArray(x){
return Object.prototype.toString.call(x) === '[object Array]'
}
一些较为复杂的方法,来自大牛的博客总结:
function isArray(object){
return object && typeof object === 'object' && Array == object.constructor;
}
function isArray(object){
return object && typrof object === 'object' &&
typeof object.length === 'number' &&
typeof object.splice === 'function' &&
//判断length属性是否可枚举,对于数组,为false
!(object.propertyIsEnumerable('length'));
}
object.propertyEnumerable(proName);方法判断制定的属性是否可以枚举