一共整理列举了4种判断一个对象是不是数组的方法,欢迎补充~
先上代码
let shuzu=[];
shuzu.push(1,2,3,43); //向数组里添加几项
console.log(shuzu); //打印这个数组
console.log(Array.isArray(shuzu)); //方法1
console.log(shuzu instanceof Array); //方法2
console.log(Array.prototype.isPrototypeOf(shuzu)); //方法3
console.log(Object.prototype.toString.call(shuzu)); //方法4
结果:
四种方法我简称方法1,方法2,方法3,方法4。
方法1:Array.isArray(…),这是JS已经提供的判断一个对象是不是数组的方法
方法2: … instanceof Array,instanceof是用来判断引用类型的方法,而type则是用来判断基本类型的方法,instanceof 运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性,返回一个布尔值。
方法3:Array.prototype.isPrototypeOf(…),利用isPrototypeOf()方法,判定Array是不是在obj的原型链中,如果是,则返回true,否则false。关于原型链,请参考https://blog.csdn.net/alaAicy/article/details/104300188
方法4:Object.prototype.toString.call(…),根据对象的class属性(类属性),跨原型链调用toString()方法,在js中一个对象一旦被创建,在内部会携带创建对象的类型名,js中提供了调用对象原型中的toString方法,也就是其中call可以这么理解,相当于对象去借用这个 Object.prototype.toString();