基本類型
- string
- number
- boolean
- null
- undefined
- object
內(nèi)置對象
- String([object String])
- Number
- Boolean
- Object
- Function
- Array([object Array])
- Date
- RegExp
- Error
- JavaScript 中的對象有字面形式(比如 var a = { .. })和構(gòu)造形式(比如 var a = newArray(..))。字面形式更常用疑苔,不過有時候構(gòu)造形式可以提供更多選項栋烤。
- 許多人都以為“JavaScript 中萬物都是對象”冀值,這是錯誤的罪佳。對象是 6 個(或者是 7 個痢畜,取決于你的觀點(diǎn))基礎(chǔ)類型之一敛熬。對象有包括 function 在內(nèi)的子類型肺稀,不同子類型具有不同的行為,比如內(nèi)部標(biāo)簽 [object Array] 表示這是對象的子類型數(shù)組应民。
- 對象就是鍵 / 值對的集合话原。可以通過 .propName 或者 ["propName"] 語法來獲取屬性值诲锹。訪問屬性時繁仁,引擎實(shí)際上會調(diào)用內(nèi)部的默認(rèn) [[Get]] 操作(在設(shè)置屬性值時是 [[Put]]),[[Get]] 操作會檢查對象本身是否包含這個屬性归园,如果沒找到的話還會查找 [[Prototype]]鏈(參見第 5 章)黄虱。
- 屬性的特性可以通過屬性描述符來控制,比如 writable 和 configurable庸诱。此外悬钳,可以使用Object.preventExtensions(..)、Object.seal(..) 和 Object.freeze(..) 來設(shè)置對象(及其屬性)的不可變性級別偶翅。
- 屬性不一定包含值——它們可能是具備 getter/setter 的“訪問描述符”默勾。此外,屬性可以是可枚舉或者不可枚舉的聚谁,這決定了它們是否會出現(xiàn)在 for..in 循環(huán)中母剥。
- 你可以使用 ES6 的 for..of 語法來遍歷數(shù)據(jù)結(jié)構(gòu)(數(shù)組、對象,等等)中的值环疼,for..of會尋找內(nèi)置或者自定義的 @@iterator 對象并調(diào)用它的 next() 方法來遍歷數(shù)據(jù)值习霹。