原型
1. 实例和构造函数(类)的关系
- 实例是类的具象化,由new关键字执行类之后得到的对象
- 类是实例的抽象化,将多个具有共同特点的对象的特点抽象成规范,这个规范叫类(构造函数)
- 实例 被 类 创造
2. 实例对象
- 其实可以作为普通对象看待,普通对象也有以下特点
- 内部会自带一个属性:`__proto__`,这个属性是个对象类型,用来指向创建自身的类,身上的`prototype`属性
- `__proto__`也被称为隐式原型
3. 可被构造的函数(类)
- 每个可被new执行的函数(类),身上都会有一个属性:`prototype`,这个属性是个对象类型,用来**被**将来new执行创建出来的实例身上的隐式原型`__proto__`指向
- `prototype`也被称为显示原型
- 在`prototype`这个属性内,又有一个属性:`constructor`,用来指向当前`prototype`所属的函数
4. 对象的属性的读写规则
- 向上查找,就近原则
- 当使用对象某个属性时,会先在对象自身查找,如果有就使用,如果没有,会顺着隐式原型,继续查找,如果找到,使用,同时停止,如果还没,继续查找...直到顶层原型,还找不到,抛出undefined
- 通过实例,查找某个属性,自身没有,其实就是找自身构造函数的`prototype`
- 如果给构造函数的`prototype`添加属性或方法,意味着,将来的实例,也可以使用