Heim > Web-Frontend > js-Tutorial > Wie vermeide ich die Referenzübergabe bei der Verwendung von Array.prototype.fill() mit Objekten?

Wie vermeide ich die Referenzübergabe bei der Verwendung von Array.prototype.fill() mit Objekten?

Linda Hamilton
Freigeben: 2025-01-01 13:17:10
Original
222 Leute haben es durchsucht

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

Ü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'
Nach dem Login kopieren

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 => ({}));
Nach dem Login kopieren

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);
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage