Übergabe von Objekten an Array.prototype.fill() per Referenz
Beim Initialisieren eines Arrays mit einer festen Länge mit der Methode fill() , führt die Zuweisung eines Objekts als Wert dazu, dass alle Array-Elemente auf dasselbe Objekt verweisen, anstatt neue Instanzen zu erstellen. Dies kann zu unbeabsichtigtem Verhalten beim Ändern von Array-Elementen führen.
Beispiel:
var arr = new Array(2).fill({}); console.log(arr[0] === arr[1]); // true arr[0].test = 'string'; console.log(arr[1].test); // 'string'
Referenzübergabe vermeiden:
Um ein Array von Objekten zu erstellen, bei dem jedes Element eine eigene Instanz ist, vermeiden Sie die direkte Verwendung von fill() mit einem Objekt. Befolgen Sie stattdessen diese alternativen Ansätze:
Map-Funktion:
Füllen Sie das Array mit einem Platzhalterwert (z. B. undefiniert) und verwenden Sie map(), um jedes Element in umzuwandeln ein neues Objekt:
var arr = new Array(2).fill().map(u => ({}));
Object Factory Funktion:
Verwenden Sie eine Funktion, die ein neues Objekt zurückgibt, um das Array zu füllen:
var arr = new Array(2).fill().map(Object);
Durch den Einsatz dieser Techniken können Sie sicherstellen, dass jedes Element im Array ein Individuum ist Objekt, um eine unbeabsichtigte Referenzübergabe zu vermeiden und die Objektisolation aufrechtzuerhalten.
Das obige ist der detaillierte Inhalt vonWie vermeide ich die Referenzübergabe bei der Verwendung von Array.prototype.fill() mit Objekten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!