原始值(Primitive)
Null: 没有对象
Undefined: 没有值
Boolean
Number
BigInt
String
Symbol
对象包装类型
除了 null 和 undefined,所有原始类型都有它们相应的对象包装类型,这为处理原始值提供可用的方法。 当在原始值上访问属性时,JavaScript 会自动将值包装到相应的包装对象中,并访问对象上的属性。
Object
在 JavaScript 中,对象是唯一可变的值。事实上,函数也是具有额外可调用能力的对象
属性
属性键要么是字符串类型,要么是 symbol。属性值可以是任何类型的值,包括其他对象,从而可以构建复杂的数据结构。
数据属性: 数据属性将键与值相关联
访问器属性: 将键与两个访问器函数(get 和 set)像关联,以获取或者存储值。
索引类集合:数组和类型化数组
Array
TypedArray
Float32Array
Int8Array
带键的集合
Map
WeakMap: WeakMap 的 key 只能是 Object 类型。 原始数据类型 是不能作为 key 的(比如 Symbol)。
Set
WeakSet: 只能是对象的集合,而不能像 Set 那样,可以是任何类型的任意值。(是不可枚举的)
Object 和 Map 的区别:
Object的键名只可以是String或者Symbol, 但是 Map 不受限制
Object 上的属性访问是使用原型链的方式访问的,访问不存在的属性时会有性能问题
强制类型转换
TODO
references:
Data_structures