判断数组有哪些办法?
-
Array.isArray()
const arr = [1,2,3] console.log(Array.isArray(arr)) // true')
-
constructor
console.log(arr.constructor === Array) // true
-
instanceof(只能判断对象类型,不能判断原始类型,并且所有的对象类型都是 Object)
[] instanceof Object //true [] instanceof Array //true {} instanceof Object //true new String('3213') instanceof String //true '1231' instanceof String //false console.log(arr instanceof Array)
-
Object.prototype.toString()
console.log(Object.prototype.toString.call(arr) === '[object Array]'
- 其中 instanceof 其实原则上也是用 constructor 来判断的
- 工作中中的写法
if(!Array.isArray) { // 判断浏览器是否有 isArray 办法
Array.isArray = function(arg){return Object.prototype.toString.call(arg) === '[object Array]'
}
}