JS原型对象、对象原型、原型链

43 阅读1分钟

原型对象

构造函数中有一个prototype用以共享属性和方法。当我们需要共享时,在该构造函数的prototype中写入相关属性或方法即可。只要是原型对象,就存在constructor。
prototype中有constructor属性指向构造函数。

对象原型

对象中有一个__proto__属性指向构造函数的prototype。只要是对象,就存在对象原型。
在__proto__对象原型中也有constructor属性指向创建该实例对象的构造函数。(对象原型指向原型对象)
注意:[[prototype]]和__proto__意义相同。且__proto__只读。

关系图解

image.png

原型链

基于原型对象的继承使得不同构造函数的原型对象关联在一起,并且这种关系是一种链状结构,我们将原型对象的链状结构关系称为原型链。

image.png 右侧这条即为原型链。
类似与作用域链,原型链也是一种查找规则。这也就解释了MDN中我们查找一些方法时总会看到protoyrpe。

image.png