函数原型:每个函数都有一个prototype对象,这个对象就是函数的原型,每个函数原型中都有一个constructor属性,就是构造函数本身,构造函数被实例化后,包含一个__proto__属性,这个属性就是函数的原型,new实例化后的对象没有prototype原型,有__proto__;
函数的原型有一个优点就是在原型中添加属性,所有的实例化对象都可以访问到。
原型链:在访问一个属性或者方法的时候,先从自身里面去找,如果自身找不到就通过这个对象的proto属性指向的对象查找,如果还没有就继续通过现在查找的对象的proto属性指向的对象查找,直到结束,如果最后找不到就返回undefined;
代码实现:先定义一个函数,里面写一些属性;然后在这个函数的原型上设置一些属性;然后在new 实例化这个函数;最后通过调用这个实例化出来的新函数来查找属性,就可以实现一个原型链;