在物件字面量中,如果屬性名是合法的標示符那麼時候用引號擴起來是可選的,相應的在訪問屬性時可以使用兩種方式,中括號或者點。否則定義時引號是必須的,在訪問時也只能使用括號形式。
每個物件都會被鏈結到原型物件,可以通過原型物件實現繼承,所有通過物件字面量建立的物件都會被連線到object.property,也可以指定某個物件為原型物件。
當訪問乙個物件的屬性時,會出發原型鏈,首先會檢查當前物件是否有這個屬性,如果沒有則再去原型物件找,如果還沒有,再去原型物件的原型物件找,以此類推,直到到達object.property。
只會在讀取屬性值時出發原型鏈,設定屬性值時不會,因為如果設定時發現物件沒有改屬性而去在原型物件中尋找屬性並設定的話,會影響一類物件的值。
for in 在列舉物件屬性時,屬性出現的順序是不確定的,如果程式需要依賴於屬性順序,可以通過定義乙個存放屬性名的陣列,並通過另一種for 迴圈來實現,這種方式的好處是可以只關注陣列中的屬性名。不用擔心其中混有原型鏈的屬性或其他不需要關注的屬性。
通過delete 來移除一的物件的屬性,這樣可能會暴露出原型鏈的屬性。
JavaScript語言精粹 筆記
1 物件屬性檢索 var student 要檢索name,可以用student name 或者 student.name。2 物件屬性更新 student.name wang student.nickname yu 物件之前沒有nickname屬性,則自動擴充到改物件中。3 物件的引用 var x ...
《JavaScript語言精粹》摘錄一
1 識別符號 區分大小寫 第乙個字元必須是字母 下劃線或美元符號,其他字元可以是字母 下劃線 美元符號或數字 關鍵字和保留字不可用作識別符號 關鍵字 if else catch等 保留字 abstract boolean break byte case catch char class const ...
讀js語言精粹收穫
1.js可以根據選擇跳出多層迴圈 在迴圈前加個標籤 label for var i 0 i 2 i 2.typeof運算子產生的值只有 number undefined string boolean es5的基礎資料型別少了乙個null function object 注 array和null結果都...