1. 通过 instanceof 来判断

  1. instanceof运算符用于检验构造函数的prototype属性是否出现在对象的原型链中的任何位置,返回一个布尔值。
  1. let a = [];
  2. a instanceof Array; //true
  3. let b = {};
  4. b instanceof Array; //false

2. 通过 Array.isArray() 来判断

  1. Array.isArray() 用于确定传递的值是否是一个数组,返回一个布尔值。
  1. let a = [1,2,3]
  2. Array.isArray(a);//true

3. 通过 constructor 来判断

实例的构造函数属性constructor指向构造函数,那么通过constructor属性也可以判断是否为一个数组。

  1. let a = [1,3,4];
  2. a.constructor === Array;//true

4. 通过 Object.prototype.toString.call() 判断

它强大的地方在于不仅仅可以检验是否为数组,比如是否是一个函数,是否是数字等等
Object.prototype.toString().call()可以获取到对象的不同类型,例如

  1. // 检验是否为数组
  2. let a = [1,2,3]
  3. Object.prototype.toString.call(a) === '[object Array]';//true
  4. //检验是否是函数
  5. let a = function () {};
  6. Object.prototype.toString.call(a) === '[object Function]';//true
  7. //检验是否是数字
  8. let b = 1;
  9. Object.prototype.toString.call(a) === '[object Number]';//true