js如何判断一个对象是否属于一个类

237 阅读2分钟

前言

今天呢我们来讲解一下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这个类

image.png 但是这个constructor属性不是特别的好,因为我们这个是作为这个对象的属性来进行操作的,这个对象的属性是可以修改的,就好比我们在这里的话,修改constructor的属性

obj.__proto__.constructor=Array
console.log(obj.__proto__.constructor)

image.png 通过这个是判断的话,我们不知道它中间是否被修改过。

总结

所以我们通过这个instanceof能拿到的呢会根据更加的准确一点,但是我们的constructor呢他也可以拿到我们的这一个构造函数,也可以指向该对象的构造函数。