判断数组有哪些办法?

  1. Array.isArray()

    const arr = [1,2,3]console.log(Array.isArray(arr)) // true')
  2. constructor

    console.log(arr.constructor === Array) // true
  3. instanceof (只能判断对象类型,不能判断原始类型,并且所有的对象类型都是Object)

    [] instanceof Object //true[] instanceof Array //true{} instanceof Object //truenew String('3213') instanceof String //true'1231' instanceof String //falseconsole.log(arr instanceof Array)
  4. 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]'  }}