constructor 是專門爲function而生的,它存在於每個function的prototype 屬性中,這個constructor保存了指向function的一個引用。函數
在執行以下代碼時 function F() { // some code } ,會產生2個動做:1是爲函數添加一個原型屬性(prototype) 2。爲 prototype 對象額外添加一個 constructor 屬性,而且該屬性保存指向函數F 的一個引用。
這樣當咱們把函數F做爲自定義構造函數來建立對象的時候,對象實例內部會自動保存一個指向其構造函數內部(即自定義構造函數F的)一個屬性proto,spa
因此咱們在每個對象實例中就能夠訪問構造函數的 prototype 全部擁有的所有屬性和方法,就好像它們是實例本身的同樣。固然該實例也有一個 constructor屬性了(從 prototype 那裏得到的),每個對象實例均可以經過 constrcutor 對象訪問它的構造函數,請看下面代碼:.net
具體原理和詳細解釋請看轉載地址:https://blog.csdn.net/zengyonglan/article/details/53465505var f = new F(); alert(f.constructor === F);// output true alert(f.constructor === F.prototype.constructor);// output true