Maison > interface Web > js tutoriel > Comment éviter le passage de références lors de l'utilisation de Array.prototype.fill() avec des objets ?

Comment éviter le passage de références lors de l'utilisation de Array.prototype.fill() avec des objets ?

Linda Hamilton
Libérer: 2025-01-01 13:17:10
original
194 Les gens l'ont consulté

How to Avoid Reference Passing When Using Array.prototype.fill() with Objects?

Passer des objets à Array.prototype.fill() par référence

Lors de l'initialisation d'un tableau de longueur fixe à l'aide de la méthode fill() , l'attribution d'un objet comme valeur entraîne que tous les éléments du tableau font référence au même objet plutôt que de créer de nouvelles instances. Cela peut entraîner un comportement inattendu lors de la modification des éléments du tableau.

Exemple :

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

console.log(arr[0] === arr[1]); // true
arr[0].test = 'string';
console.log(arr[1].test); // 'string'
Copier après la connexion

Éviter le passage de référence :

Pour créer un tableau d'objets, chaque élément étant une instance distincte, évitez d'utiliser fill() directement avec un objet. Suivez plutôt ces approches alternatives :

Fonction Map :

Remplissez le tableau avec une valeur d'espace réservé (par exemple, non définie) et utilisez map() pour transformer chaque élément en un nouvel objet :

var arr = new Array(2).fill().map(u => ({}));
Copier après la connexion

Fonction Object Factory :

Utiliser un fonction qui renvoie un nouvel objet pour remplir le tableau :

var arr = new Array(2).fill().map(Object);
Copier après la connexion

En employant ces techniques, vous pouvez vous assurer que chaque élément du tableau est un objet individuel, en évitant le passage de références involontaire et en maintenant l'isolation des objets.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal