先上兩句代碼:函數
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__!原型鏈