Skip to content

Latest commit

 

History

History
99 lines (64 loc) · 1.6 KB

weakMap.md

File metadata and controls

99 lines (64 loc) · 1.6 KB

WeakMap

  • Weakmap é um objeto, similar ao map, que permite APENAS chaves do tipo Object e mantém as referências de forma fraca, sendo volátil e não iterável.
  const wm1 = new WeakMap();

  console.log(wm1); // WeakMap {}

Operações


  • set: Adiciona um par de chave e valor.
  const wm1 = new WeakMap();

  const obj1 = {};

  const obj2 = {};

  wm1.set(obj1, "obj1");

  wm1.set(obj2, "obj2");

  console.log(wm1); // Não irá mostrar os objetos ali dentro.

  • has: Retorna true se a chave existir.
  (...)

  wm1.has(obj1); // true

  wm1.has(obj2); // true

  • get: Retorna o valor de uma determinada chave.
  (...) 

  wm1.get(obj1); // obj1

  wm1.get(obj2); // obj2

  • delete: Remove um par de chave e valor.
  (...)

  wm1.delete(obj1); 

  wm1.delete(obj2);

  • Sem a referência para a chave não é possível acessar o valor.

  • O WeakMap serve para poder implementar uma coleção com referência fraca para que não tenha que se preocupar em remover esses elementos dela utilizando cache.

  const areas = new WeakMap();

  const rectangle = {
    x: 10,
    y: 2
  };
  
  const rectangle2 = {
    x: 5,
    y: 3
  };

  function calculateArea(rectangle) {
    if (areas.has(rectangle)) {
      console.log("Using cache...");
      return areas.get(rectangle);
    }
    
    const area = rectangle.x * rectangle.y;

    areas.set(rectangle, area);

    return area;
  };

  calculateArea(rectangle1); // 20
  calculateArea(rectangle1); // Using cache... 20
  calculateArea(rectangle2); // 15