判断数组有哪些办法?
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 //truenew String('3213') instanceof String //true'1231' instanceof String //falseconsole.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]' }}