原型对象
构造函数中有一个prototype用以共享属性和方法。当我们需要共享时,在该构造函数的prototype中写入相关属性或方法即可。只要是原型对象,就存在constructor。prototype中有constructor属性指向构造函数。
对象原型
对象中有一个__proto__属性指向构造函数的prototype。只要是对象,就存在对象原型。在__proto__对象原型中也有constructor属性指向创建该实例对象的构造函数。(对象原型指向原型对象)
注意:[[prototype]]和__proto__意义相同。且__proto__只读。
关系图解
原型链
基于原型对象的继承使得不同构造函数的原型对象关联在一起,并且这种关系是一种链状结构,我们将原型对象的链状结构关系称为原型链。
右侧这条即为原型链。
类似与作用域链,原型链也是一种查找规则。这也就解释了MDN中我们查找一些方法时总会看到protoyrpe。