如何判断一个对象是不是数组()

【如何判断一个对象是不是数组()】用typeof可以来判断类型但并不准确,如下图(返回字符串表示数据的类型)
如何判断一个对象是不是数组()
文章图片
1、从构造函数入手 instanceof 运算符用来测试一个对象在其原型链中是否存在一个构造函数的 prototype 属性,返回一个布尔值。
如何判断一个对象是不是数组()
文章图片
2、从原型入手, Array.prototype.isPrototypeOf(obj) 利用isPrototypeOf()方法,判定Array是不是在obj的原型链中,如果是,则返回true,否则false。


如何判断一个对象是不是数组()
文章图片
3、js已经提供了一个Array.isArray()方法来判断是不是数组 当检测Array实例时, Array.isArray 优于 instanceof,因为Array.isArray能检测iframes.


如何判断一个对象是不是数组()
文章图片
假如不存在 Array.isArray(),则在其他代码之前运行下面的代码将创建该方法。

if(!Array.isArray){
Array.isArray=function(arg){
returnObject.prototype.toString.call(arg)==='[object Array]';
};
}
4、 使用toString()检测对象类型 每个对象都有一个toString()方法,当该对象被表示为一个文本值时,或者一个对象以预期的字符串方式引用时自动调用。默认情况下,toString()方法被每个Object对象继承。如果此方法在自定义对象中未被覆盖,toString() 返回 "[object type]",其中type是对象的类型。
如何判断一个对象是不是数组()
文章图片

    推荐阅读