A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://developer.mozilla.org/es/docs/Web/JavaScript/Reference/Global_Objects/WeakSet below:

WeakSet - JavaScript | MDN

WeakSet

Baseline Widely available *

El objeto WeakSet te permite almacenar objetos débiles en una colección.

Descripción

Los objetos WeakSet son colecciones de objetos. Al igual que Set, cada objecto WeakSet puede estar solo una vez; todos los objetos en una colección WeakSet son unicos.

Las principales diferencias con el objeto Set son:

Caso de uso: Detección de referencias circulares

Las funciones que se llaman recursivamente necesitan una forma de protección contra las estructuras de datos circulares mediante el seguimiento de los objetos que ya se han procesado.

Los WeakSet son ideales para este propósito:

// Ejecuta una devolución de llamada en todo lo almacenado dentro de un objeto
function execRecursively(fn, subject, _refs = null) {
  if (!_refs) _refs = new WeakSet();

  // Evita la recursividad infinita
  if (_refs.has(subject)) return;

  fn(subject);
  if ("object" === typeof subject) {
    _refs.add(subject);
    for (let key in subject) execRecursively(fn, subject[key], _refs);
  }
}

const foo = {
  foo: "Foo",
  bar: {
    bar: "Bar",
  },
};

foo.bar.baz = foo; // ¡Referencia circular!
execRecursively((obj) => console.log(obj), foo);

Aquí, se crea un WeakSet en la primera ejecución, y es pasado con cada llamada de función subsiguiente (usando el parámetro interno _refs).

El número de objetos o su orden de recorrido es irrelevante, por lo que un WeakSet es más adecuado (y eficaz) que un Set para rastrear referencias de objetos, especialmente si hay una gran cantidad de objetos involucrados.

Constructor
WeakSet()

Crea un nuevo objeto WeakSet.

Métodos de instancia
WeakSet.prototype.add(value)

Añade valor al objeto WeakSet.

WeakSet.prototype.delete(value)

Elimina value del WeakSet. WeakSet.prototype.has(value) devolverá false después.

WeakSet.prototype.has(value)

Devuelve un valor booleano que afirma si value está presente en el objeto WeakSet o no.

Ejemplos Usando el objeto WeakSet
const ws = new WeakSet();
const foo = {};
const bar = {};

ws.add(foo);
ws.add(bar);

ws.has(foo); // true
ws.has(bar); // true

ws.delete(foo); // elimina foo del conjunto
ws.has(foo); // false, foo ha sido eliminado
ws.has(bar); // true, bar se mantiene

Tenga en cuenta que foo !== bar. Si bien son objetos similares, no son el mismo objeto. Y así ambos se añaden al conjunto.

Especificaciones Compatibilidad con navegadores Véase también

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4