JavaScript——判断数组的方式有哪些

112 阅读1分钟

一、判断数组的方式:

  • 通过Object.prototype.toString.call()做判断 Object.prototype.toString.call(obj).slice(8,-1) === 'Array';
  • 通过原型链做判断 obj.__proto__ === Array.prototype;
  • 通过ES6的Array.isArray()做判断 Array.isArrray(obj);
  • 通过instanceof做判断 obj instanceof Array
  • 通过Array.prototype.isPrototypeOf Array.prototype.isPrototypeOf(obj)

二、总结

1.Array.prototype.isPrototypeOf(arr)

判断Array是否在arr的原型链上,返回布尔类型,如果存在返回true,否则返回false

2.instanceof

判断前者是否继承自后者

3.Object.prptptype.toString.call()

每一个继承 Object 的对象都有 toString方法,如果 toString 方法没有重写的话,会返回 [Object type],其中type为对象的类型。

但当变量类型不为对象时,使用 toString 方法会直接返回数据内容的字符串,所以我们需要使用call或者apply方法来改变toString方法的执行上下文。

4.Array.isArray()

ES6中判断数组的方法,返回的是boolean值。