如何判断一个对象是不是数组()
【如何判断一个对象是不是数组()】用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){4、 使用toString()检测对象类型 每个对象都有一个toString()方法,当该对象被表示为一个文本值时,或者一个对象以预期的字符串方式引用时自动调用。默认情况下,toString()方法被每个Object对象继承。如果此方法在自定义对象中未被覆盖,toString() 返回 "[object type]",其中type是对象的类型。
Array.isArray=function(arg){
returnObject.prototype.toString.call(arg)==='[object Array]';
};
}
文章图片
推荐阅读
- 一个人的旅行,三亚
- 一个小故事,我的思考。
- 一个人的碎碎念
- 七年之痒之后
- 我从来不做坏事
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- 异地恋中,逐渐适应一个人到底意味着什么()
- 如何寻找情感问答App的分析切入点
- 迷失的世界(二十七)
- live|live to inspire 一个普通上班族的流水账0723