
12
|
第一章
如果你曾經使用過 Ruby 的類別,就會發現 Ruby 的類別機制和我們現在的做法非常類
似。這種做法的美妙之處,在於能讓程式具備模組(module)的架構。模組指的是一些
可重複使用的程式碼,如果希望讓不同的類別共用一些相同的屬性,除了繼承之外,也
可以使用模組。
var ORMModule = {
save: function(){
// 可共用的函式
}
};
var Person = new Class;
var Asset = new Class;
Person.include(ORMModule);
Asset.include(ORMModule);
利用原型物件繼承類別
雖然本書已經數度提及
prototype
屬性,但至今還沒詳細的解說它的概念。因此似乎有
必要好好的介紹它,好讓你知道該如何利用它來實現類別的繼承機制。
JavaScript 是一種以原型為基礎(prototype-based)的程式語言,它採用了一種
原型物
件
(
prototypical object
)的概念(有別於一般將類別、實體兩者劃分得壁壘分明的概
念)。所謂的原型物件,指的是一種用來當做模版、讓新物件可透過它取得初始化屬性
的物件。所有的物件都可以被拿來當作其他物件的原型物件,藉此和其他物件共享自己
所擁有的屬性。因此,原型物件的概念,其實也可以視為是一種繼承的形式。
當你試圖存取物件的某個屬性,JavaScript 會先看屬性是否存在於物件內部。如果沒找
到,就會開始搜尋物件的原型物件,並沿著原型物件的樹狀結構 ...