¿Qué es WeakMap en ES6?

WeakMap es una nueva estructura o colección de datos introducida en ES6. WeakMaps le permite almacenar una colección de pares clave-valor. Adopta las mismas propiedades de Map. La principal diferencia es que las claves de WeakMap no pueden ser un tipo de datos primitivo. Las claves deben ser de tipo objeto y los valores pueden ser de cualquier tipo de dato. 

Otra diferencia importante es que la clave de WeakMap está débilmente referenciada. Significa que cada vez que se usa un objeto como clave para WeakMap, ese objeto puede ser recolectado como basura. Puede suceder cuando se pierde la referencia a ese objeto (es decir, asigna esa referencia de objeto a NULL). Y cuando el objeto ya no está en uso, JavaScript Garbage Collection lo detecta y lo libera de la memoria. Por lo tanto, las claves de WeakMaps están débilmente referenciadas.

Sintaxis:

const m = new WeakMap();

Parámetros: Es un objeto Iterable cuyos Elementos están en forma de Par Clave-Valor.

Funciones de WeakMap:

  • set (clave, valor) : se utiliza para agregar un elemento (par clave-valor) al objeto WeakMap.
  • get(clave) : Devuelve el Valor asociado a la “clave” especificada.
  • has(key) : esta función se utiliza para comprobar si la «clave» especificada existe en WeakMap o no. Devuelve verdadero si está presente y falso si no está presente.
  • delete(key) : elimina un elemento de la «clave» especificada del objeto WeakMap.

Ejemplo: código JavaScript para mostrar el funcionamiento de estas funciones.

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));

Salida: A continuación se muestra la salida del código anterior en el navegador.

Explicación:

  • La Primera línea está imprimiendo el contenido del WeakMap.
  • Eliminamos el obj2 antes de imprimirlo, por lo que no se muestra en la consola.
  • En la segunda línea, usamos la función .get(obj1) y, por lo tanto, devolvió el valor, es decir, el objeto 1.
  • La tercera línea es que tratamos de encontrar si obj1 existe en WeakMap ‘m’ o no, y devolvió true .

Publicación traducida automáticamente

Artículo escrito por vaibhavpatel1904 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *