先上两句代码:函数
var Person = function () {}; var p = new Person();
把new的过程拆分红如下三步:spa
<1> var p={}; 也就是说,初始化一个对象p;prototype
<2> p.__proto__=Person.prototype;code
<3> Person.call(p);也就是说构造p,也能够称之为初始化p。对象
咱们通常只在写构造函数的时候会用到prototype,其实__proto__才是咱们常说的原型链,由于咱们通常都是在生成实例。blog
prototype只是在实现原型链中只是起到了一个辅助做用,换句话说,他只是在new的时候有着必定的价值,而原型链的本质,其实在于__proto__!原型链