Javascript的簡單類型包括數字、字串、布爾值、null值、undefined值。
其他的值都是對象。對象是可變的鍵控集合。數組、函數、Regex都是對象。
對象是屬性的容器,屬性都是名字和值對。名字可以是包括Null 字元串在內的全部字串。值可以是除了undefined之外的任何值。
javascript中的對象是無類別(class-free)的。
javascript包括一個原型鏈特性,允許對象繼承另一個對象的屬性。正確的使用能減少對象初始化的時間和記憶體損耗。
對象字面量:
var empty_object={};
var stoog ={"first-name":"Jerry",
second_name:"howead"};
如果屬性名稱合法並且不是保留字,那麼名字的引號可以不寫。
檢索:
1、stoog["first-name"]
2、stoog.second_name
如果嘗試返回一個不存在的元素的值,那麼將返回一個undefined值。
||可以用來填充預設值
如:var middle = stoog["first-name"]||"(none)";
檢索undefined值將會導致TypeError異常,可以使用&&來避免錯誤
flight.equipment && flight.equipment.model //undefined.
引用 reference
對象通過引用來傳遞,他們永遠不會被拷貝
原型 Prototype
當用Prototype編寫一個類後,當new一個新的object,瀏覽器會自動把prototype中的內容附加在object上。
反射 Reflection
typeof flight.number //'number' 該方法會檢查原型鏈。
flight.hasOwnProperty('number') //true .該方法不會檢查原型鏈
枚舉 Enumeration
for in 可以用來遍曆一個對象中所有的屬性名稱。會列出所有的屬性,包括函數和可能不關心的原型中的屬性。並且不按照順序取得。
所以可以用 typeof 或者hasOwnProperty來過濾不需要的值。
所以通常使用for而不是for in,可以得到我們想要的屬性,而不會得到原型鏈中的屬性,並且可以按順序取得。
刪除 Delete
它會刪除對象中包含的屬性,但是不觸及原型鏈中的任何對象。所以刪除對象的屬性可能會讓原型鏈中的屬性浮現出來。
減少全域變數汙染 Global Abatement
最小化使用全部變數的一個方法是在應用中只建立唯一一個全域變數,然後讓該變數稱為你的應用的容器。
閉包也是一個有效減少全域汙染的方法。