什么是ES6中的WeakMap

什么是ES6中的WeakMap

WeakMap是ES6中引入的一种新的数据结构或集合。WeakMap可以存储一组键值对。它采用了Map的属性。主要区别是WeakMap的键值不能是基本数据类型。键必须是对象类型,而值可以是任何数据类型。

另一个主要区别是WeakMap的 是弱引用。这意味着当一个对象被用作WeakMap的键时,如果该对象的引用丢失(即将该对象引用赋值为NULL),它可能会被垃圾收集。当对象不再使用时,JavaScript的垃圾收集机制会检测到并从内存中释放该对象。因此,WeakMap的键是弱引用的。

语法:

const m = new WeakMap();

参数: 这是一个可迭代对象,其元素采用键值对的形式。

WeakMap的功能:

  • set(key, value) : 此函数用于向WeakMap对象中添加一个元素(键值对)。
  • get(key) : 返回与指定“key”相关联的值。
  • has(key) : 此函数用于检查WeakMap中是否存在指定的“key”。如果存在则返回 true ,否则返回 false
  • delete(key) : 从WeakMap对象中删除指定“key”的元素。

示例: JavaScript代码展示这些函数的工作原理。

JavaScript

// Creating a WeakMap Object 
const m = new WeakMap(); 
  
// Adding elements in it 
  
// Remember, only object can 
// be a key in WeakMap 
obj1 = {}  
m.set(obj1, "Object 1"); 
obj2 = {} 
m.set(obj2, "Object 2"); 
  
// Use delete() function 
m.delete(obj2); 
  
// Print the WeakMap 
console.log(m); 
  
// Using get() function to get  
// specific element in WeakMap 
console.log(m.get(obj1)); 
  
// Using has() function to check 
// if a particular element is  
// present in WeakMap or not. 
console.log(m.has(obj1)); 

输出: 以下是在浏览器中上述代码的输出。

什么是ES6中的WeakMap

解释:

  • 第一行打印了WeakMap的内容。
  • 我们在打印之前删除了obj2,因此在控制台中不会显示它。
  • 在第二行中,我们使用.get(obj1)函数,因此它返回了值,即Object 1。
  • 第三行是我们尝试查找WeakMap ‘m’中是否存在obj1,它返回 true

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程