






















































看以上兩段代碼,估計很多人對后面的代碼熟悉,也這樣寫了。可他們執行結果是一樣的。如果你改變了javascript對象的原型對象后會有些區別。
在這我想提出以下幾個問題:
??? a、javascript對象也是單根繼承的對象.但不是所有對象都繼承自Object.如例子中的Date對象。
??? b、千萬別亂定義Object.prototype原型對象。prototype.js中加了個extends被人說了半天。但我們自己寫類庫時,千萬別嘗試改Object的prototype。
??? c、別用javacript語言模仿java來寫代碼。想上面的,需要一個person的“類”,并不是非需要定義一個,注意javascript對象的屬性是可以隨意增加或刪除的。并不象java那樣在類中寫死。
??? d、就上面兩段代碼有什么區別呢?可以簡單的說是person繼承了Object”類“。javascript中對象的繼承是用prototype來實現的,后面我們討論prototype原型對象。
??? e、那我們應用的時候到底是否該自己定義自己的構造函數(如person),還是直接使用Object呢?這是個復雜的問題,我個人來說喜歡多用Object.
alert(new Date() instanceof Object); //true
我覺得Date也是一個Object,只不過是Date有他自己的toString方法覆蓋了Object的toString方法。
我覺得需要是一個類的話就盡量讓它像一個類,而不要是隨便增加它的屬性。起碼代碼的可讀性和維護性比較好