美文网首页
Map 和 WeakMap

Map 和 WeakMap

作者: 从此以后dapeng | 来源:发表于2016-11-23 14:42 被阅读270次

Map

  1. map对象是一个简单的键/值映射。任何值(包括对象和原始值)都可以用作一个键或一个值。
var m = new Map();
var o = {p: "Hello World"};
m.set(o, "content")
m.get(o) // "content"```

2. **Map**也可以接受一个数组作为参数。该数组的成员是一个个表示键值对的数组。

var map = new Map([["name", "张三"], ["title", "Author"]]);
map.size // 2
map.get("name") // "张三"
map.get("title") // "Author"```

  1. size属性 返回Map结构的成员总数。即返回映射对象中的键/值对的数目。
  2. set(k,v) 方法返回的是Map本身,因此可以采用链式写法。
  3. get(k) 方法读取key对应的键值,如果找不到key,返回undefined
  4. has(key) 方法返回一个布尔值,表示某个键是否在Map数据结构中。
  5. delete(key) 方法删除某个键,返回true。如果删除失败,返回false
  6. clear() 方法清除所有成员,没有返回值。
  7. keys():返回键名的遍历器
  8. values():返回键值的遍历器
  9. entries():返回所有成员的遍历器
  10. forEach():遍历Map的所有成员。

WeakMap

  1. WeakMap结构与Map结构基本类似,唯一的区别是它只接受对象作为键名(null除外),不接受其他类型的值作为键名**,而且键名所指向的对象,不计入垃圾回收机制。
var map = new WeakMap()
map.set(1, 2)
// TypeError: 1 is not an object!
map.set(Symbol(), 2)
// TypeError: Invalid value used as weak map key
  1. WeakMap的设计目的在于,键名是对象的弱引用(垃圾回收机制不将该引用考虑在内),所以其所对应的对象可能会被自动回收。当对象被回收后,WeakMap自动移除对应的键值对**。
  2. 典型应用是,一个对应DOM元素的WeakMap结构,当某个DOM元素被清除,其所对应的WeakMap记录就会自动被移除。基本上,WeakMap的专用场合就是,它的键所对应的对象,可能会在将来消失。WeakMap结构有助于防止内存泄漏。
  3. WeakMapMap在API上的区别主要是两个,一是没有遍历操作(即没有key()values()entries()方法),也没有size属性;二是无法清空,即不支持clear方法。这与WeakMap的键不被计入引用、被垃圾回收机制忽略有关。
  4. WeakMap只有四个方法可用:get()set()has()delete()**。

相关文章

  • 24.WeakMap

    WeakMap WeakMap 是 Map 的弱引用,它也是在 Map 的基础上有了一些限制和自己的特性。 没有 ...

  • Set WeakSet Map WeakMap

    Set SetWeak Map WeakMap

  • Map 和 WeakMap

    Map map对象是一个简单的键/值映射。任何值(包括对象和原始值)都可以用作一个键或一个值。 var map =...

  • Map和WeakMap

    1. Map 1.1 含义和基本用法 JavaScript 的对象(Object),本质上是键值对的集合(Ha...

  • Map和WeakMap

    Map 1 .之前对象的问题Object只能做键值对的集合Hash结构 2 .只有对同一个对象的引用,Map才将其...

  • WeakMap的学习与应用场景

    WeakMap 是什么? WeakMap 与 Map 类似,也是生成 键值对的组合,但是有区别:1.WeakMap...

  • Set Map WeakSet WeakMap

    本文转自博客:Set、WeakSet、Map及WeakMap Set 和 Map 主要的应用场景在于 数据重组 和...

  • ES6学习笔记(四)

    十五、Map和WeakMap 1、Map 用途:类似json,但是 json 的键(key)只能是字符串 ​ ...

  • JS 预编译执行顺序

    1.WeakMap的键名只支持对象,map的键名可以是任意值。 2. Map可以遍历,WeakMap不可以 3. ...

  • Map 和 WeakMap 总结

    Map 类型特点和创建方式 Map 类型的增删改查 map.set 增加map.delete(key) 删除单个m...

网友评论

      本文标题:Map 和 WeakMap

      本文链接:https://www.haomeiwen.com/subject/mckvpttx.html