# 原型链

# 原型链图

![原型链图]['./image/yuanxing.png']

# 四个概念

  1. js 分为函数对象和普通对象,每个对象都有proto属性,但是只有函数对象才有 prototype 属性;
  2. Object、Function 都是 js 内置的函数, 类似的还有我们常用到的 Array、RegExp、Date、Boolean、Number、String
  3. 属性proto是一个对象,它有两个属性,constructor 和proto
  4. 原型对象 prototype 有一个默认的 constructor 属性,用于记录实例是由哪个构造函数创建;

# 两个准则

  1. 准则 1:原型对象(即 Person.prototype)的 constructor 指向构造函数本身 Person.prototype.constructor == Person

  2. 准则 2:实例(即 person01)的proto和原型对象指向同一个地方 person01.proto == Person.prototype