原型模式
原型模式解决了公有属性的问题,把属性和方法放到父类的原型(prototype)属性上,那么父类产生的实例都可以调用父类原型上的方法;
每一个函数数据类型(普通函数、类)天生自带一个prototype属性,它的属性值是一个对象数据类型;prototype的属性值天生自带一个constructor属性,constructor的属性值指向当前原型所属的类;每一个对象数据类型天生自带一个__proto__属性,它的属性值指向当前实例所属类的原型;(如果不能确定它是谁的实例,都是Object的实例)
原型链
它是一种基于__proto__向上查找的机制;当我们操作实例的某个属性或者方法时,首先找自己空间中私有的属性或者方法;如果找到了,则结束查找,使用自己私有的即可;如果没找到,则基于__proto__找所属类的prototype,如果找到了就用这个公有的,如果没有找到,基于原型上的__proto__继续向上查找,一直找到Object.prototype的原型为止,如果Object的原型也不存在,那么返回undefined;这样一级一级向上查找就会形成原型链;