instanceof原理

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容