Maison >interface Web >js tutoriel >Pourquoi Array.prototype.fill() crée-t-il des références d'objets partagés et comment puis-je l'éviter ?

Pourquoi Array.prototype.fill() crée-t-il des références d'objets partagés et comment puis-je l'éviter ?

DDD
DDDoriginal
2024-12-18 17:46:14690parcourir

Why Does Array.prototype.fill() Create Shared Object References, and How Can I Avoid It?

Array.prototype.fill() Référence au lieu de créer une nouvelle instance

Lors de la tentative d'initialisation d'un tableau à l'aide de Array.prototype.fill( ), le comportement peut être inattendu lorsque la valeur de remplissage est un objet. Dans ce cas, les références au même objet sont stockées dans chaque élément du tableau, conduisant à un partage involontaire des propriétés et du comportement.

Pour résoudre ce problème, il est recommandé d'utiliser des méthodes alternatives comme map() pour créer de nouvelles instances d'objets pour chaque élément du tableau. Ceci peut être réalisé en remplissant d'abord le tableau avec une valeur arbitraire, puis en mappant chaque élément sur un nouvel objet :

var arr = new Array(2).fill().map(u => ({}));

Vous pouvez également utiliser Object() comme mappeur pour créer un nouvel objet pour chacun. élément du tableau :

var arr = new Array(2).fill().map(Object);

En employant ces techniques, vous pouvez vous assurer que chaque élément du tableau rempli est un objet indépendant, éliminant ainsi les problèmes potentiels liés aux références partagées.

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