前面講到原型屬性與實例屬性,在此我不得不提constructor屬性,爲了更深入瞭解constructor屬性,我查了一些資料,下面我們來看看一個實例。
function Person() {
// some code
}
javascript內部會自動執行如下幾個動作:
1.爲Person()函數添加一個原形(即 prototype)屬性 ;
2.爲 prototype 對象額外添加一個 constructor 屬性,並且該屬性保存指向函數Person的一個引用;
這樣當我們把函數 Person ()作爲自定義構造函數來創建對象的時候,對象實例內部會自動保存一個指向其構造函數(這裏就是我們的自定義構造函數 Person())的 prototype 對象的一個屬性proto.(關於其屬性可以查看:https://msdn.microsoft.com/zh-cn/library/dn342818(v=vs.94).aspx)
在每一個對象實例中就可以訪問構造函數的 prototype 所有擁有的全部屬性和方法.就好像它們是實例自己的一樣,當然該實例也有一個 constructor屬性了(從 prototype 那裏獲得的),每一個對象實例都可以通過 constrcutor訪問它的構造函數。
var person1=new Person();
var person2=new Person();
上面這兩個對象都有一個constructor屬性,該屬性指向Person.
document.write(person1.constructor===Person) //output: true
document.write(person1.constructor===Person.prototype.constructor); //output: true
參考資料:
《javascript高級程序設計》
http://blog.csdn.net/zengyonglan/article/details/53465505