对象、Map、WeakMap

对象

属性名

  • 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

不可遍历

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值