前言
今天呢我们来讲解一下js面试的一个经典面试题,js中如何判断一个对象是否属于一个类,这个的话呢在我们的面试题中呢会经常会遇到,回答这个问题,我们首先要清楚的就是我们的类它是什么类,其实呢它本身指向的就是一个构造函数,类本身指向就是构造函数,类的数据类型就是函数。
如何判断一个对象属于一个类
我们是不是可以通过构造函数去实例化一个对象,那么按照了我们的这种方式。
// 创建一个Person的类
function Person(name){
this.name=name
}
// 实例化这个对象
var obj=new Person('张三')
那我怎么知道我这个obj是属于这个Person的呢?
方法
- instanceof:判断构造函数的prototype属性是否出现在对象的原型链的任何位置
console.log(obj instanceof Person) //true
//这里把后面改成Array,这个时候结果就变为false,所以我们这个obj是不属于这个Array的
console.log(obj instanceof Array) //false
- 对象属性constructor来进行判断,指向该对象的构造函数 这里我们打印一下obj里的constructor
console.log(obj.__proto__.constructor)
可以看到Person这个类
但是这个constructor属性不是特别的好,因为我们这个是作为这个对象的属性来进行操作的,这个对象的属性是可以修改的,就好比我们在这里的话,修改constructor的属性
obj.__proto__.constructor=Array
console.log(obj.__proto__.constructor)
通过这个是判断的话,我们不知道它中间是否被修改过。
总结
所以我们通过这个instanceof能拿到的呢会根据更加的准确一点,但是我们的constructor呢他也可以拿到我们的这一个构造函数,也可以指向该对象的构造函数。