# 原型和原型链

# 构造函数

当一个函数使用 new 关键字调用时,被称作构造函数。

# 实例对象

使用 new 调用构造函数会返回一个对象,这个对象叫做实例对象

# 原型对象

构造函数的 prototype 属性指向原型对象,实例的[[Prototype]]指针指向原型对象,在浏览器中可以通过__proto__属性进行访问原型对象。
原型对象的 constructor 属性指向构造函数。

# 原型链

实例对象的原型对象可以是另一个实例对象,另一个实例对象有它自己的原型对象,另一个实例对象的原型对象又可以是另一个实例,这样各个实例对象和原型对象之间就形成链条关系,称为原型链。

查找对象属性会先在当前对象上查找,如果查找不到会沿着原型链向上查找。

原型链的构建是通过将一个类型的实例赋值给另一个构造函数的原型实现的。这样,子类型就能够访问超类型的所有属性和方法,这一点与基于类的继承很相似。