类型
原始值
- 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 的区别: 1. Object的键名只可以是String或者Symbol, 但是 Map 不受限制 2. Object 上的属性访问是使用原型链的方式访问的,访问不存在的属性时会有性能问题
强制类型转换
references: * Data_structures