如果看了上一小節(jié)的最后一個例子,對自定義的“類”應(yīng)該比較熟悉了。在javascript中,可以說沒有方法,因?yàn)楹瘮?shù)和字符串一樣也是種數(shù)據(jù)類型,但類中的函數(shù)可以用this關(guān)鍵字。下面我說的類的屬性可以是方法,也可以指字段。在一個自定義“類”中有中有幾個地方可以定義屬性。?? a、函數(shù)名中直接定義。? 如Person.name。在這定義相當(dāng)于類名的屬性。靜態(tài)的,訪問的時候必須用Person.name來訪問,不能用new Person().name訪問,也訪問不到。?? b、構(gòu)造函數(shù)的this.中。當(dāng)你用new function()時,這些屬性就是你所持對象的屬性。用new Person().屬性? 來訪問。?? c、構(gòu)建好對象以后,給對象增加屬性。和構(gòu)造函數(shù)中的屬性使用類似。?? d、函數(shù)名的prototype中?? e、父類或Object 的prototype中。
(1)對象屬性優(yōu)先級通過運(yùn)行以下代碼,我們訪問對象屬性優(yōu)先級如下:c>b>d>ec種屬性必須在定義以后訪問才有效。a種屬性實(shí)例訪問不到。javascrpt語言預(yù)定義的屬性不能用for in 得到。如toString
(2)prototype屬性是只讀的看如下代碼,你不要試圖通過變量改變原型對象的屬性。你也不可能改變,你只會通過c模式給對象增加一個屬性。另外原型對象是所有實(shí)例共享的。理論上也不可以改變。