obj instanceof Person
一 instanceof 的作用
可以查看obj是否为Person的实例
二 instanceof的原理
1.为啥说某个对象是某个构造函数(或类的实例)
查看对象的_proto_属性和类(或构造方法)的prototype属性指向的是否为同一个对象,若为同一个对象则是实例的关系,若不是同一个对象则不是实例的关系。
2.为啥说所有实例都是Object的实例
查看实例是根据原型链(也就是根据_proto_)一级一级的向下查找
直接上图

image.png
根据原型链看,第二个_proto_就是Object的prototype属性指的那个对象
一般情况下第二个_proto_就是Object的prototype属性所指的对象,但有时候类涉及到了继承就要多几层了
class A1{
}
class A2 extends A1{
}
let a = new A2()
console.dir(a)

image.png
还有手动更改的(一般不会有)
function Person(){
}
function Car(){
}
Car.prototype.__proto__ = Person.prototype
let c1 = new Car()
console.log(c1 instanceof Car) //true
console.log(c1 instanceof Person) //true
console.dir(c1)

image.png