Frage

Ich habe gerade herausgefunden, wie Objekte beispielsweise in Javascript als Referenz übergeben werden:

for(var layer = 0; layer < hudLayers['layers'].length; layer++){

    // Store the to-be-calculated values in this object
    var tempValues = hudLayers['layers'][layer];

    tempValues['name'] = 'test';
}

Dadurch wird der Wert in tempValues und hudLayers geändert.(Scheint irgendwie offensichtlich zu sein, aber ein Beitrag ohne ein bisschen Code scheint so nackt zu sein.)

Gibt es einen schnellen Weg, dies zu umgehen?

War es hilfreich?

Lösung

Dies ist kein Beispiel für das Übergeben von Referenz (Sie übergeben keine Parameter). Sie sind jedoch richtig;Zuweisen eines Objekts erstellt keine tiefe Kopie.

Sie können eine tiefe Kopie eines solchen Objekts erstellen:

generasacodicetagpre.

Beachten Sie, dass, wenn der Konstruktor eines Objekts Nebenwirkungen hat, diese Code auslöst.

Andere Tipps

In JavaScript gibt es keinen Durchgang.Objekte werden über Referenzen zugegriffen, und diese Referenzen werden zugewiesen oder weitergegeben, genau wie in Java

Das Erstellen einer tiefen Kopie eines Objekts ist so einfach wie objCopy = obj.toSource();.

.toSource auf MDN

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top