


Was ist der Unterschied zwischen Deep Copy und Shallow Copy in Javascript?
In JavaScript kopiert das flache Kopieren nur die Speicheradresse der Originaldaten, was zwei Datenzeigern entspricht, die auf dieselbe Adresse zeigen. Wenn sich ein Datenelement ändert, wirkt sich dies auf die beiden Datenpunkte aus Deep Copy zeigt auf dieselbe Adresse. Wenn sich ein Element ändert, hat dies keine Auswirkungen auf das andere.
Die Betriebsumgebung dieses Tutorials: Windows 10-System, JavaScript-Version 1.8.5, Dell G3-Computer.
Was ist der Unterschied zwischen Deep Copy und Shallow Copy in JavaScript?
Bevor wir uns mit Shallow Copy und Deep Copy befassen, wollen wir zunächst die Konzepte von Heap und Stack verstehen.
Heap und Stack sind beide Bereiche, die zur Speicherung im Speicher unterteilt sind. Dem Stapel wird automatisch Speicherplatz zugewiesen, der vom System automatisch freigegeben wird. Dem Heap wird dynamisch Speicher zugewiesen, und seine Größe ist variabel und wird nicht automatisch freigegeben.
Dann schauen wir uns grundlegende Datentypen und Referenzdatentypen an (auch als komplexe Datentypen bekannt)
1. Grundlegende Typen: String, Number, Boolean, Null, undefiniert, Symbol (neu in ES6, stellt eindeutige Basiswerte dar); Typen Der Wert belegt eine feste Größe im Speicher und wird im Stapelspeicher gespeichert.
2. Referenztypen: Objekt, Array, Datum, Funktion usw.; der Wert des Referenztyps ist ein Objekt und wird im Heapspeicher gespeichert.
Das Konzept der dunklen und flachen Kopie
Hinweis: Der Unterschied zwischen dunkler und flacher Kopie gilt nur für komplexe Objekte wie Array und Objekt.
1. Flache Kopie: Es wird nur die Speicheradresse der Originaldaten kopiert, was zwei Datenzeigern entspricht, die auf dieselbe Adresse zeigen. Änderungen an einem der Datenelemente wirken sich auf das andere aus.
2. Deep Copy: Die beiden Daten verweisen auf unterschiedliche Adressen und die Datenelemente wirken sich nicht gegenseitig aus, wenn sie sich ändern. 1. Flache Kopie Dabei müssen Sie die Anforderungen für das tiefe Kopieren klären. Handelt es sich nur um eine tiefe Kopie der Objektattribute oder Array-Elemente der ersten Ebene oder um eine rekursive Kopie aller Objektattribute und Array-Elemente?
Deep Copy Array
①Direktes Durchlaufen
var arr = [0, 1, 2]; var arrB; //把arr赋值给arrB arrB = arr; console.log("arr:", arr); console.log("arrB:", arrB); console.log("-----------改变arrB中数组元素的值后-----------"); arrB[0] = 5; console.log("arr:", arr); console.log("arrB:", arrB);
Ausführungsergebnis: Die Änderung des arrB-Array-Elements hat keinen Einfluss auf den Wert des arr-Array-Elements
②: wird zum Verbinden von zwei oder mehr Arrays verwendet. Diese Methode verändert das vorhandene Array nicht, sondern gibt lediglich eine Kopie des verketteten Arrays zurück.
var arr = [1, 2, 3, 4]; function copy(arr){ var newArr = []; for(var i=0;i<arr.length;i++){ newArr.push(arr[i]); } return newArr; } var arrB = copy(arr); console.log("arrB:", arrB); console.log("-----------改变arrB中数组元素的值后-----------"); arrB[0] = 5; console.log("arr:", arr); console.log("arrB:", arrB);
Laufendes Ergebnis: Die Elemente des arr-Arrays haben sich mit den Änderungen der Elemente des arrB-Arrays nicht geändert
③: Diese Methode gibt einen Teil der Elementfragmente zurück, die aus dem vorhandenen Array abgefangen wurden, um ein zu bilden neues Array (das ursprüngliche Array wird nicht verändert) .
var arr = [0, 1, 2]; var arrB; //把arr赋值给arrB arrB = arr.concat(); console.log("arr:", arr); console.log("arrB:", arrB); console.log("-----------改变arrB中数组元素的值后-----------"); arrB[0] = 5; console.log("arr:", arr); console.log("arrB:", arrB);
Ausführungsergebnisse: Änderungen an den Elementen im Array wirken sich nicht gegenseitig aus
Die oben genannten drei Methoden eignen sich nur für einfache Arrays, bei denen die Array-Elemente grundlegende Datentypen sind, und für Arrays, bei denen es sich um Array-Elemente der ersten Ebene handelt Referenztypvariablen wie Objekte oder Arrays Im Allgemeinen sind alle oben genannten Methoden wirkungslos.
Verwandte Empfehlungen:
Javascript-Lern-TutorialDas obige ist der detaillierte Inhalt vonWas ist der Unterschied zwischen Deep Copy und Shallow Copy in Javascript?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

React'sStrongCommunityAndemoFfernumousBenefits: 1) unmittelbarer AspekteStosolutions -Throughplatformslikestackoverflowandgithub;

ReactnativeIsChosenFormoBileDententwicklungsentwicklung

Richtige Aktualisierung von usestate () in reagieren erfordert das Verständnis der Details des Staatsmanagements. 1) Verwenden Sie funktionale Updates, um asynchrone Updates zu verarbeiten. 2) Erstellen Sie ein neues Zustandsobjekt oder ein neues Array, um zu vermeiden, dass der Status direkt geändert wird. 3) Verwenden Sie ein einzelnes Zustandsobjekt, um komplexe Formulare zu verwalten. 4) Verwenden Sie die Anti-Shake-Technologie, um die Leistung zu optimieren. Diese Methoden können Entwicklern helfen, häufige Probleme zu vermeiden und robustere React -Anwendungen zu schreiben.

Die komponentierte Architektur von React macht die skalierbare UI -Entwicklung durch Modularität, Wiederverwendbarkeit und Wartbarkeit effizient. 1) Modularität ermöglicht es der Benutzeroberfläche, in Komponenten unterteilt zu werden, die unabhängig entwickelt und getestet werden können. 2) Wiederverwendbarkeit der Komponente spart Zeit und behält die Konsistenz in verschiedenen Projekten auf. 3) Die Wartbarkeit erleichtert die Problempositionierung und Aktualisierung, aber Komponenten müssen überkompytrechisch und tief verschachtelt werden.

Bei React vereinfacht die deklarative Programmierung die UI -Logik, indem sie den gewünschten Zustand der Benutzeroberfläche beschreibt. 1) Durch Definieren des UI -Status wird React automatisch DOM -Updates verarbeitet. 2) Diese Methode macht den Code klarer und leichter zu warten. 3) Auf die Komplexität des staatlichen Managements und die optimierte Wiederherstellung sollten jedoch Aufmerksamkeit geschenkt werden.

Tonavigatereaccts complexecosystemeffektiv, verständliche thetoolsandlibraries, erkenntheirstrengthsandweaknesses und integratheTemtemtemhanced Development.StartWithCorereActconceptsandusSestate, dann nachgradualintroducalexsolutionsklikeduxtexsucteduxtusicledxasneeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeei

ReactuseSkeyStoeffictionIdentifyListItemsByProvidableIntableIdentitytoEachElement.1) KeysallowreactToTrackChangesinlistSwithoutre-RenderingTheentirelist.2) wählendeUniqueandStableKeys, Vermeiden von ARTARAYINDICES.3) korrektKeyUssistentimProvvoveSperSPesSper-stableSperformanc

KeysinreacctarecrucialforoptimizingTheRenderingProcessandmanagingDynamicListseffezivität.TospotandFixkey-bezogene Veriss: 1) adduniquekeystolistItemstovoidWarningsandperformanceISSUES, 2) UseUcentifiersFromDatainStoficesforstableKeys, 3) sicherstellen


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heißer Artikel

Heiße Werkzeuge

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

EditPlus chinesische Crack-Version
Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

VSCode Windows 64-Bit-Download
Ein kostenloser und leistungsstarker IDE-Editor von Microsoft

SecLists
SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

ZendStudio 13.5.1 Mac
Leistungsstarke integrierte PHP-Entwicklungsumgebung
