Maison >interface Web >js tutoriel >Introduction détaillée à la nouvelle structure de données WeakSet dans ES6

Introduction détaillée à la nouvelle structure de données WeakSet dans ES6

巴扎黑
巴扎黑original
2017-08-11 11:05:591392parcourir

WeakSet est similaire à Set. C'est également une collection avec des éléments non répétitifs. La différence entre eux est que les éléments de WeakSet doivent être des objets et ne peuvent pas être d'autres types. Ensuite, cet article vous donnera une introduction détaillée à l'utilisation de la nouvelle structure de données WeakSet d'ES6. Les amis intéressés devraient y jeter un œil ensemble

WeakSet est similaire à Set. Ce sont également des collections avec des éléments non répétitifs. . La différence entre eux est que dans WeakSet Les éléments doivent être des objets et ne peuvent pas être d'autres types.

Caractéristiques :

1. L'élément doit être un objet.

Ajouter un élément de type numéro.


const ws = new WeakSet()
ws.add(1)

Le résultat est une erreur de type.

TypeError : valeur non valide utilisée dans un ensemble faible

Ajouter un objet.


const ws = new WeakSet()
var a = {p1:'1', p2:'2'}
ws.add(a)
console.log(ws.has(a));

Ajoutez OK, le résultat montre :

true

Vous pouvez utiliser la méthode has de WeakSet pour déterminer si un l'élément est déjà au milieu défini.

Si vous n'avez pas besoin de stocker l'élément, vous pouvez utiliser la méthode delete pour supprimer l'élément.

2. Les références faibles ne sont pas incluses dans le garbage collection

Pour les objets élément ajoutés à WeakSet, WeakSet n'ajoutera pas 1 au nombre de références de l'objet élément. L'objet élément ajouté au WeakSet sera libéré par le garbage collection tant que l'objet élément n'est pas référencé par d'autres objets que le WeakSet. L'objet élément dans le WeakSet sera automatiquement libéré sans fuite de mémoire.

En raison de cette fonctionnalité, ses performances sont supérieures à celles de la carte. Il peut être utilisé pour des scénarios nécessitant un stockage non séquentiel, une non-répétition et un stockage temporaire.


const ws = new WeakSet()
var a = {p1:'1', p2:'2'}
ws.add(a)
a = null
console.log(ws.has(a));

Ajoutez d'abord l'objet au WeakSet, puis définissez l'objet sur null, puis lorsque la méthode has ci-dessous est jugée, le résultat est affiché, indiquant que il n'y a plus d'objet dans le WeakSet. L'objet existe.

false

3. Vous ne pouvez pas parcourir

car il a une référence faible à l'objet élément interne et sera libéré par le garbage collection à tout moment. temps, donc les méthodes Traversal telles que size et forEach ne sont pas prises en charge.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn