概念
    prototype在javascript中我们都叫它原型、而javascript中所有对象都带有prototype属性。由于有了这个属性,也让javascript中顶级对象Object和普通对象、内置对象建立了关系、比如javascript中的继承也是通过原型链的关系实现的。

    带有prototype属性的对象

    1. Object.prototype
    2. Array.prototype
    3. Number.prototype
    4. String.prototype
    5. Boolean.prototype
    6. RegExp.prototype
    7. Date.prototype
    8. Error.prototype

    proto和原型链

    • proto是所有对象上都有的属性 这个属性指向一个对象
    • 原型链只有内置对象或者是实例过的对象上才带有的属性

    原型总结
    实例化之前

    • 首先定义对象function fa() {}
    • 实例化之前 fa上有prototype和proto属性
    • fa.prototype.proto == Object.prototye
    • fa.proto == Function.prototype
    • Function.prototype.proto == Object.prototype
    • 因此 fa.proto.proto <==> fa.prototype.proto__

    实例化之后

    • var f = new fa();
    • f上只有proto属性 对于prototype只有在实例之前才有 或者内置对象Array Date …上才有
    • f.proto == fa.prototype
    • 因此f.proto.proto == fa.prototype.proto == fa.proto.proto

    原型链示意图
    672484-20151002201901996-1935842029.png