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