Heim > Web-Frontend > js-Tutorial > Warum erstellt Array.prototype.fill() gemeinsame Objektreferenzen und wie kann ich dies vermeiden?

Warum erstellt Array.prototype.fill() gemeinsame Objektreferenzen und wie kann ich dies vermeiden?

DDD
Freigeben: 2024-12-18 17:46:14
Original
678 Leute haben es durchsucht

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

Array.prototype.fill() Verweis statt Erstellen einer neuen Instanz

Beim Versuch, ein Array mit Array.prototype.fill( zu initialisieren ) kann das Verhalten unerwartet sein, wenn der Füllwert ein Objekt ist. In diesem Fall werden die Verweise auf dasselbe Objekt in jedem Element des Arrays gespeichert, was zu einer unbeabsichtigten gemeinsamen Nutzung von Eigenschaften und Verhalten führt.

Um dies zu beheben, wird empfohlen, alternative Methoden wie map() zu verwenden Erstellen Sie für jedes Element im Array neue Instanzen von Objekten. Dies kann erreicht werden, indem das Array zunächst mit einem beliebigen Wert gefüllt wird und dann jedes Element einem neuen Objekt zugeordnet wird:

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

Alternativ können Sie Object() als Mapper verwenden, um für jedes Element ein neues Objekt zu erstellen Array-Element:

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 gefüllten Array ein unabhängiges Objekt ist, wodurch potenzielle Probleme im Zusammenhang mit gemeinsamen Referenzen vermieden werden.

Das obige ist der detaillierte Inhalt vonWarum erstellt Array.prototype.fill() gemeinsame Objektreferenzen und wie kann ich dies vermeiden?. 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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage