一、原型
1.每个函数上面都有一个prototype属性,指向了函数的原型对象(函数名.prototype)
2.每个实例上面都有一个隐型的__proto__指向函数的原型对象(函数名.prototype)
3.实例访问属性或者方法的时候遵循实例上存在就用实例上的属性和方法,不存在就顺着__proto__往上查找,找到就停止的原则
4.每个函数的原型对象上都有一个constructor属性,指向构造函数本身
5.每个原型上还有一个__proto__属性,指向上一级原型对象(例如:Person.prototype.proto == Object.prototype 输出true)
二、原型链
当对象寻找某一个属性的时候,如果自身的属性上没有找到就去原型对象上找,如果原型对象上没有找到就去原型的原型上查找,以此类推就构成了一条原型链。
三、作用
1.可以手动修改某个对象的原型
2.构造函数添加属性,原型上添加方法可以更好的封装一个类(方法也定义在构造函数上会造成内存浪费)