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'
É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 => ({}));
Fonction Object Factory :
Utiliser un fonction qui renvoie un nouvel objet pour remplir le tableau :
var arr = new Array(2).fill().map(Object);
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!