对象
属性名
- ES5及以前只能是字符串
- ES6之后增加了计算属性名
也可以将Symbol作为属性名
方法
- delete()
遍历
遍历对象属性时的顺序是不确定的,在不同的 js 引擎中可能不一样
for...in
遍历对象的可枚举属性列表(包括原型链)。Object.keys()
包含对象直接包含的可枚举属性(不包括Symbol)Object.getOwnPropertyNames()
包含对象直接包含的属性(不包括Symbol)Reflect.ownKeys
包含对象直接包含的属性(包括Symbol)
Map
Object 结构提供了“字符串 - 值”的对应,Map 结构提供了“值 - 值”的对应,是一种更完善的 Hash 结构实现。
属性名
Map各种类型的值都可以当做key
- 对于简单类型,===才会判断是同一个key,但是NaN看做是同一个key
- 对于引用类型,内存地址相同才会判断是同一个key
方法
- set()
- get()
- has()
- delete()
- clear()
遍历
遍历顺序是插入顺序
-
keys
-
values
-
entries
for (let item of map.entries())
for (let item of map.entries())
等同于使用for (let [key, value] of map)
-
forEach
WeakMap
属性名
- 只接受对象作为键名(null除外),不接受其他类型的值作为键名。
- 键名所指向的对象,都是弱引用,不计入垃圾回收机制。
方法
-
get
-
set
-
has
-
delete