js最全判断对象是不是数组类型的7种方法
2020-02-03 02:06
405 查看
1. 判断对象的原型对象与数组的原型对象是否相等
var obj1={}; var obj2=[1,2,3] var obj3=new Date() // 判断原型对象是否相同 console.log(obj1.__proto__===Array.prototype)// false console.log(obj2.__proto__===Array.prototype)// true console.log(obj3.__proto__===Array.prototype)// false
2.因为__proto__可能被浏览器禁用可用一个函数来代替
var obj1={}; var obj2=[1,2,3] var obj3=new Date() // 用函数获取对象的原型对象 console.log(Object.getPrototypeOf(obj1)===Array.prototype)// false console.log(Object.getPrototypeOf(obj2)===Array.prototype)//true console.log(Object.getPrototypeOf(obj3)===Array.prototype)//false
3.更直接的一种函数判断
var obj1={}; var obj2=[1,2,3] var obj3=new Date() // 原型对象里有一个方法 console.log(Array.prototype.isPrototypeOf(obj1), Array.prototype.isPrototypeOf(obj2), Array.prototype.isPrototypeOf(obj3) ) //输出结果 false true false
4. 判断子对象的构造函数是不是Array
var obj1={}; var obj2=[1,2,3] var obj3=new Date() // 判断子对象的构造函数是不是Array console.log(obj1.constructor==Array, obj2.constructor==Array, obj3.constructor==Array) // false true false
注意: 这里子对象的constructor 是继承父对象的constructor 并不是子对象里面有的
5. 用instanceof 判断
var obj1={}; var obj2=[1,2,3] var obj3=new Date() // 对象是不是Array 的一个实例 返回值是布尔值 console.log(obj1 instanceof Array) console.log(obj2 instanceof Array) console.log(obj3 instanceof Array)
6. 查找对象的class 属性
var obj1={}; var obj2=[1,2,3] var obj3=/\d/ // 判断对象的class 属性 这个在Object的原型对象 的toString()的第二个参数就是这个对象刚开始的类型 // 一定要加call 不加了 因为每个对象的构造函数重写过toString() console.log(Object.prototype.toString.call(obj1)===[object Array]) console.log(Object.prototype.toString.call(obj2)===[object Array]) console.log(Object.prototype.toString.call(obj3)===[object Array])
// 判断对象的class 属性 这个在Object的原型对象 的toString()的第二个参数就是这个对象刚开始的类型
// 一定要加call 不加了 因为每个对象的构造函数重写过toString()
call 的原理是啥 替换Function原型对象中toString中的this 原本指的 Object 的实例 现在被转换成你所要检测的对象 因为原型对象中的toString() 返回的第二个参数就是对象的class属性 这是对象刚出生就定义的
7. 用Array.isArray() 判断
var obj1=[1,2,3,4] var obj2={} console.log(Array.isArray(obj1))//true console.log(Array.isArray(obj2))//false
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- JS中判断对象是不是数组的方法
- JS中判断对象是不是数组的方法
- JS中判断对象是不是数组的方法
- 判断数据类型,判断是否空对象,js判断是不是数组
- 判断一个js对象是不是数组
- JS判断对象是不是数组“Array”
- js判断一个对象为数组的方法
- 判断一个JS对象是否为数组的方法
- 判断一个变量是不是数组Array类型的方法
- JS 将变量 转化为字符串的方法, 适用于所有类型,数组, JSON对象,函数和基本类型等
- 从js对象类型的判断,附call与apply方法的区别
- js中通过Object.prototype.toString方法----精确判断对象的类型
- javascript 判断 一个对象是不是 数组的方法
- js数组和对象相等判断、拷贝详解(结合几个现象讲解引用数据类型的趣事)
- JS的数据类型判断函数、数组对象结构处理、日期转换函数,浏览器类型判断函数合集
- js-对象、数组等类型的判断
- 判断一个js对象是不是数组
- js中精确判断对象类型--关于typeof 和Object.prototype.toString方法的区别
- js中判断一个对象的类型的方法typeof/constructor/instanceof
- javascript封装判断全数据类型方法, toString方法, 对象的枚举(in, instanceof, hasOwnProperty的用法), arguments类数组属性