From 074785cea106179cb3305637055ab0a009ca74f2 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:42:52 -0500 Subject: initial commit --- .../reference/global_objects/weakmap/index.html | 130 +++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 files/pt-br/web/javascript/reference/global_objects/weakmap/index.html (limited to 'files/pt-br/web/javascript/reference/global_objects/weakmap/index.html') diff --git a/files/pt-br/web/javascript/reference/global_objects/weakmap/index.html b/files/pt-br/web/javascript/reference/global_objects/weakmap/index.html new file mode 100644 index 0000000000..1069690348 --- /dev/null +++ b/files/pt-br/web/javascript/reference/global_objects/weakmap/index.html @@ -0,0 +1,130 @@ +--- +title: WeakMap +slug: Web/JavaScript/Reference/Global_Objects/WeakMap +translation_of: Web/JavaScript/Reference/Global_Objects/WeakMap +--- +
{{JSRef("Global_Objects", "WeakMap")}}
+ +

Sumário

+ +

O objeto WeakMap é uma coleção de pares key/value na qual as chaves são fracamente referenciadas.
+ As chaves devem ser objetos, e os valores podem ser de tipos arbitrários.

+ +

Você pode descobrir mais sobre WeakMaps na seção {{SectionOnPage("/en-US/docs/Web/JavaScript/Guide/Keyed_collections", "WeakMap object")}}.

+ +

Sintaxe

+ +
new WeakMap([iterable])
+
+ +

Parâmetros

+ +
+
iterable
+
Iterable é um Array ou outro objeto iterável cujos elementos são pares key-value (Arrays de dois elementos). Cada par key-value será adicionados ao novo WeakMapnull é tratado como undefined.
+
+ +

Descrição

+ +

Por quê WeakMap?

+ +

Um programador JavaScript experiente vai notar que esta API pode ser implementada em JavaScript com dois arrays (um para chaves, um para valores) compartilhado pelos 4 métodos da API. Tal implementação teria duas principais incoveniências. A primeira é uma busca O(n) (n sendo o número de chaves no map). A segunda é o problema de memory leak. Com maps escritos manualmente, o array de chaves guardaria referências para objetos chave, prevenindo-os de serem coletados pelo Garbage Collector. Nos WeakMaps nativos, referências aos objetos chave são segurados de modo "fraco", o que significa que eles não previnem a coleção pelo GC no caso de não haver nenhuma outra referência ao objeto. 

+ +

Por conta das referências serem fracas, chaves de WeakMap não são enumeráveis (i.e. não existe um método que dá a você uma lista de chaves). Se existisse tal método, a lista dependeria no estado da coleção do GC, introduzindo não-determinismo. Se você quiser ter uma lista de chaves, deve usar um {{jsxref("Map")}}. 

+ +

Propriedades

+ +
+
WeakMap.length
+
O valor da propriedade length é 0.
+
{{jsxref("WeakMap.prototype")}}
+
Representa o prototype para o constructor WeakMap. Permite a adição de propriedades para todos os objetos WeakMap.
+
+ +

Instâncias WeakMap

+ +

Todas as instâncias WeakMap herdam de {{jsxref("WeakMap.prototype")}}.

+ +

Propriedades

+ +

{{page('pt-BR/docs/JavaScript/Reference/Global_Objects/WeakMap/prototype','Propriedades')}}

+ +

Métodos

+ +

{{page('pt-BR/Web/JavaScript/Reference/Global_Objects/WeakMap/prototype','Metodos')}}

+ +

Exemplos

+ +

Exemplo: Usando WeakMap

+ +
var wm1 = new WeakMap(),
+    wm2 = new WeakMap(),
+    wm3 = new WeakMap();
+var o1 = {},
+    o2 = function(){},
+    o3 = window;
+
+wm1.set(o1, 37);
+wm1.set(o2, "azerty");
+wm2.set(o1, o2); // um valor pode ser qualquer coisa, incluindo um objeto or uma função
+wm2.set(o3, undefined);
+wm2.set(wm1, wm2); // chaves e valores pode ser quaisquer objetos. Até mesmo WeakMaps!
+
+wm1.get(o2); // "azerty"
+wm2.get(o2); // undefined, pois não existe valor para o2 em wm2
+wm2.get(o3); // undefined, pois este é o valor definido
+
+wm1.has(o2); // true
+wm2.has(o2); // false
+wm2.has(o3); // true (mesmo se o valor armazenado for 'undefined')
+
+wm3.set(o1, 37);
+wm3.get(o1); // 37
+wm3.clear();
+wm3.get(o1); // undefined, pois wm3 foi 'limpado' e não há mais valor para o1.
+
+wm1.has(o1);   // true
+wm1.delete(o1);
+wm1.has(o1);   // false
+
+ +

Especificações

+ + + + + + + + + + + + + + + + + + + + + +
EspecificaçõesStatusComentário
{{SpecName('ES2015', '#sec-weakmap-objects', 'WeakMap')}}{{Spec2('ES2015')}}Definição inicial.
{{SpecName('ESDraft', '#sec-weakmap-objects', 'WeakMap')}}{{Spec2('ESDraft')}} 
+ +

Compatibilidade com browsers

+ +


+ {{Compat("javascript.builtins.WeakMap")}}

+ +
 
+ +

Veja também

+ + -- cgit v1.2.3-54-g00ecf