對象
JS中的簡單對象:數字
,字符串
,布爾值
,null值
和undefined值
。
對象和Json
var flight = {
airline:"Oceanic",
"number":815,
first_name: "Lisa", //此處first_name符合字符串規範,可以不用" "
"last-name":"Smith"//此處 - 不屬於JS字符串規範,所以必須使用引號
}
以上是一個JS對象。我想那它與Json對象做一個比較:
{
"airline":"Oceanic",
"number":"815",
"first_name": "Lisa",
"last-name":"Smith"
}
Json對象需要
鍵-值
均要用" "
括起來。而對於對象,如果鍵符合JS字符串標準,則可以不使用" "
括起來;但是對於不符合規範的鍵來說,則必須使用" "
來括住。
訪問
由於對於JS合法標識符的區別,也造成了JS對象的不同訪問。以上面的flight
對象爲例,如果要訪問first_name
屬性,則:
flight["first_name"]
flight.first_name
均是正確的。而對於last-name的訪問,由於-
不是JS合法標識符,所以只能被[ ]
訪問。
flight["last-name"]
原型
要與new關鍵字配合使用,原型鏈向上繼承。原型關係是一種動態的關係。如果我們添加一個新的屬性到原型中,該屬性會立即對所有基於該原型創建的對象可見。
父變字可見,子無向父尋。
反射
typeof
檢測屬性,’number’,’string’,’object’,’undefined’,’function’等屬性。
hasOwnProperty方法,如果對象擁有獨有的屬性,它將返回true。hasOwnProperty方法不會檢查原型鏈。
刪除
delete
運算符可以用來刪除對象的屬性,如果對象包含該屬性,則會被刪除,但是它不會觸及原型鏈中的任何對象。同時它也不能刪除function
,刪除對象的屬性可能會讓原型鏈中的屬性透視出來。
減少全局變量的污染
使用唯一的全局變量對象,或者使用閉包操作。