一、什么是原型(prototype)?
- 创建的函数中都会有原型属性,这个属性是一个指针,指向一个对象(
原型对象
),原型对象里面包含由特定类型的所有实例共有的属性和方法;
二、什么是原型链?
1. 原型链第一层
- 新创建一个函数就会根据规则给这个函数创建一个原型属性,指向函数的原型对象;
- 原型对象里面会自动添加一个constructor属性,这个属性里面包含一个指回prototype属性所在的函数的指针,即constructor属性会指回原函数;
- 通过这个函数(new)创建的实例有一个__proto__指向构造函数的原型对象。
2. 整个原型链
- 原型链描述的是实例与原型的关系
- 如上所述,这个构造函数的原型对象又是另一个类型的实例,有__proto__指针指向自己的原型对象,这个原型对象同样也有自己的构造函数,通过prototype和constructor彼此连接,以此类推,直到最后一层为null