js學習筆記 058 定義子類

2021-09-30 10:53:21 字數 1419 閱讀 6749

js的物件可以從類的原型物件中繼承屬性。如果o是類b的例項,b是a的子類,那麼o也一定從a中繼承了屬性。為此首先要確保b的原型物件繼承自a的原型物件。通過inherit()函式,可以這樣來實現:

b.prototype = inherit(a.prototype); //子類派生自父類 參見前幾章的介紹

b.prototype.constructor = b; //過載繼承來自constructor屬性

這兩行**是在js中建立子類的關鍵。如果不這樣做,原型物件僅僅是乙個普通物件,它只繼承自object.prototype。

例:定義子類

//用乙個簡單的函式建立簡單的子類

function definesubclass(superclass

/*引數 父類建構函式*/,constructor /*引數

新子類的建構函式*/,methods/*例項方法:複製至原型中*/,statics /*引數

類屬性:複製至建構函式中*/) //

也可以通過父類建構函式的方法來做到這一點

functon.prototype.extend= function(constructor,methods,statics)

singletonset:乙個簡單的子類

function singletonset(member)

//建立乙個原型物件,這個原型物件繼承自set的原型

singletonset.prototype = inherit(set.prototype);

//給原型新增屬性

//如果有同名的屬性就覆蓋set.prototype中的同名屬性

extend(singletonset.prototype,,

remove:function(),

size:function(),

foreach:function(f,context),

contains:function(x)

});

它包含5個簡單的方法定義,它實現了5個核心的set方法,但從它的父類中繼承的 tostring()/toarray()和equals()方法,定義子類就是為了繼承這些方法,比如,set類的equals()方法用來實現set例項進行比較,只要set例項包含size()和foreach()方法,就可以通過equals()比較。因為singletonset是set的子類,所以它自動繼承了equals()的實現,不用再實現一次。當然,如果想要最簡單的實現方式,那麼給singletonset類定義自己的equals()版本會更高效些:

singletonset.prototype.equals = function(that);

需要注意的是,singletonset不是將set中的方法列表靜態地借用過來,而是動態地從set類繼承方法。如果set.prototype新增新的方法,set和singletonset的所有例項就會立即擁有這個方法。

js學習筆記 060 子類VS組合

js學習筆記 上一節中,定義的集合可以根據特定的標準對集合成員做限制,而且使用了子類的技術來實現的這種功能,所建立的自定義子類使用了特定的過濾函式來對集合中的成員做限制。父類和過濾函式的每個組合都需要建立乙個新的類。然而還有更好的方法來寫成這種需求,即oop中一條廣為人知的設計原則 組合優於繼承 可...

百思學習筆記04 自定義子控制器

下面我們要自定義子控制器來劃分功能 新建四個類分別繼承uiviewcontroller 然後我們要把上一段重複的 抽出來,做成乙個方法,便於自定義子控制器 初始化子控制器 void setupchildvc uiviewcontroller vc title nsstring title image...

python學習筆記 子類

class car def init self,make,model,year self.make make self.model model self.year year 設定預設值 self.odometer reading 0 def get descriptive name self lon...