JS判断一个对象是不是数组类型,一共有7种方式

判断一个对象是不是数组类型

//判断爹
//1、用__proto__获得对象的爹,然后再和数组的爹作比较
var obj1={}
var obj2=[1,2,3]
var obj3=new Date()
console.log(obj1.__proto__==Array.prototype);
//2、因为__proto__可能被浏览器禁用,所以有等效的函数来完成__proto__的任务:Object.getPrototypeOf(child)
console.log(Object.getPrototypeOf(obj1)==Array.prototype)
//3、还有一个更直接的函数:father.isPrototypeOf(child)
console.log(Array.prototype.isPrototypeOf(obj1))

//判断妈妈
//4、用父级原型对象中的constructor属性
console.log(obj1.constructor==Array)
//5、用‘child instanceof 妈妈’>bool instance 实例
console.log( obj1 instanceof Array)

//如果 obj1擅自改爹为Array.prototype则上面的方法不适用
obj.__proto__=Array.prototype
//解决
//输出对象的DNA:内部隐藏属性class
//*原型对象的toString [object 类型名]

//6、.call()可以让任何一个对象,抢到原本不属于它的任何一个函数,打破了继承关系,不受继承关系的影响,推荐此最有效,验证DNA
console.log(Object.prototype.toString.call(obj1)==[object Object])
//让obj1可以调用原本不属于它的toString


//7、ES5中新增了一个专门判断一个对象是不是数组的函数
console.log(Array.isArray(obj1))
上一篇:this指向


下一篇:所有类的父类 Java Object