檢索對像中包含的值有兩種形式。
❑當屬性名為任意字符形式,或者無法確定屬性名時,採用在後綴中括住一個字符串表達式的方式。採用這種方式比較安全,例如:
obj["first-name"]
❑如果字符串表達式是一個常數,並是一個合法的JavaScript標識符而並非保留字,那麼也可以用點(.)表示法代替。優先考慮使用點表示法,因為它更緊湊且可讀性更好,例如:
obj.obj_1.Obj_2
注意,如果嘗試檢索一個並不存在的成員元素的值,將返回一個undefined值,例如:
obj["middle-name"];//undefined
obj.middle_name;//undefined
obj["FIRST-NAME"];//undefined
讀者可以使用||運算符為對像屬性設置默認值,當對像屬性值未定義時,以默認值進行傳遞,例如:
var middle=obj["middle-name"]||"(none)";
var status=obj.status||"unknown";
由於JavaScript在檢索一個undefined值時將會導致TypeError異常,所以建議讀者不要直接檢索對像屬性值。為了穩妥起見,不妨考慮通過&&運算符來避免此類錯誤,例如:
obj.obj_1;//undefined
obj.obj_1.model;//拋出"TypeError"異常
obj.obj_1&&obj.obj_1.model;//undefined
在上面代碼中,先檢索obj.obj_1是否存在,如果存在,則進一步檢索obj.obj_1包含的屬性值。如果直接去讀取obj.obj_1.model屬性值,那麼有可能會發生異常。