概念
prototype在javascript中我们都叫它原型、而javascript中所有对象都带有prototype属性。由于有了这个属性,也让javascript中顶级对象Object和普通对象、内置对象建立了关系、比如javascript中的继承也是通过原型链的关系实现的。
带有prototype属性的对象
Object.prototypeArray.prototypeNumber.prototypeString.prototypeBoolean.prototypeRegExp.prototypeDate.prototypeError.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
原型链示意图
