8月
31
2006
分類:
最近更新:
2006-08-31
JavaScript 的個體繼承之成員的配置工作
當衍生類別 (derived class) 繼承了基底類別 (base class) 的成員時,常常忘了要初始 (配置) 那些成員,亦即呼叫基底類別的建構函數。這是 OOP 初學者,也是 JavaScript programmer 在實作繼承關係時易犯的毛病。
在「物件properties在繼承時出問題???」一文中,該作者反應的問題,其實是 OOP 初學者易犯的毛病。觀看該作者的 source code ,不難看出問題出在何處,用 C++ 的說法來解釋,就是作者在實作衍生類別時,忘了初始 (配置) 繼承自基底類別的成員。 JavaScript 並沒有類別繼承的概念,反而它是用一個已存在的 object 生成 (new) 一個新的 object ,個體成員是以類似 C++ 中的 copy constructor 方式建立的。因此,一個衍生個體 (derived object) 中屬於 Object Type ( See also: Standard ECMA-262 3rd Edition ch.8.6) 的成員,必定與基底個體 (base object) 參考同一份實體。如果衍生個體要擁有私有內容,則必須另行配置,亦即呼叫基底個體的建構函數。然而 JavaScript 本身並沒有提供一個便利的內建方法可用,需要自己寫。幸好這並不難。一個簡單有效的方法是,在建構子中,先配置一個暫時性的基底個體,然後將此暫時性個體的成員內容,一一指派給自己 (this) 的成員。因此,改寫「物件properties在繼承時出問題???」一文中的程式碼如下,即為該作者所要求的結果。
相關文章
樂多舊網址: http://blog.roodo.com/rocksaying/archives/2087071.html