1、原型对象
原型对象为构造函数的prototype属性指向的一个对象,每个构造函数以及对象都有一个prototype属性,它们从创建开始的时候就会与之关联另一个对象,这个对象就是原型对象,每一个对象都会从原型继承属性,原型对象中存储的为构造函数的属性或者对象的属性。
数组、对象、函数都具有对象特性,除null外,它们都有一个__proto__属性,它指向构造函数的prototype属性值,查找某个属性时,如果这个对象没有这个属性,就会顺着__proto__属性去它的构造函数的prototype中寻找。
原型对象中也有一个属性,为constructor属性,它指向prototype属性所在的构造函数。
如下图所示:
2、原型链
原型链为多级父元素逐级继承形成的链式结构,原型链保存着所有对象的方法和属性,原型链的作用为控制对象访问成员的使用顺序,优先使用自己的,自己没有,才延原型链向父级查找,原型链的最顶端为Object.prototype。
如下图所示: