悟透JavaScript之初看原型 --- (1)

prototype 源自法語,軟件界的標準翻譯爲原型,代表事物的初始形態,也含有模型和樣板的意義。JavaScript 中的prototype 概念恰如其分地反映了這個詞的內含,我們不能將其理解爲C++prototype 那種預先聲明的概念。

JavaScript 的所有function 類型的對象都有一個prototype 屬性。這個prototype 屬性本身又是一個object 類型的對象,因此我們也可以給這個prototype 對象添加任意的屬性和方法。既然prototype是對象的原型,那麼由該函數構造出來的對象應該都會具有這個原型的特性。事實上,在構造函數的prototype 上定義的所有屬性和方法,都是可以通過其構造的對象直接訪問和調用的。也可以這麼說,prototype 提供了一羣同類對象共享屬性和方法的機制。

 

我們先來看看下面的代碼:

function Person(name)

{

this.name = name; //設置對象屬性,每個對象各自一份屬性數據

};

Person.prototype.SayHello = function() //Person 函數的prototype 添加SayHe

llo 方法。

{

alert("Hello, I'm " + this.name);

}

var BillGates = new Person("Bill Gates"); //創建BillGates 對象

var SteveJobs = new Person("Steve Jobs"); //創建SteveJobs 對象

BillGates.SayHello(); //通過BillGates 對象直接調用到SayHello 方法

SteveJobs.SayHello(); //通過SteveJobs 對象直接調用到SayHello 方法

alert(BillGates.SayHello == SteveJobs.SayHello); //因爲兩個對象是共享prototyp

e SayHello,所以顯示:true

程序運行的結果表明,構造函數的prototype 上定義的方法確實可以通過對象直接調用到,而且代碼是共享的。顯然,把方法設置到prototype 的寫法顯得優雅多了,儘管調用形式沒有變,但邏輯上卻體現了方法與類的關係,相對前面的寫法,更容易理解和組織代碼。
發佈了15 篇原創文章 · 獲贊 5 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章