判断数组在工作中十分常见,一般掌握前三种写法足以。
1. Array.prototype.isArray
使用原型方法
const arr = [1, 2, 3, 4];
console.log(Array.isArray(arr));
2. Object.prototype.toString.call
使用对象原型toString方法,这个方法可以检验所有的类型
console.log(Object.prototype.toString.call(arr) === '[object Array]');
console.log(Object.prototype.toString.call(arr).indexOf('Array') > -1);//同理
3. instanceof
instanceof 运算符用于检测某个 实例对象 的原型链上是否出现 某个构造函数prototype原型属性,以此来判断实例。
console.log(arr instanceof Array);
4. isPrototypeOf
理解为 instanceof 的繁琐版
console.log(Array.prototype.isPrototypeOf(arr));//检测Array.prototype是否出现在arr的原型链上
5. constructor
通过原型链调用构造函数并转为字符串判断是否是数组对象
console.log(arr.constructor.toString().indexOf('Array') > -1);