2016-07-22 7 views
0
var obj = { hi : 'hello' }; 

function myFunction(arg) { 
    console.log(arg.hi); 
} 

myFunction(obj); 

wenn ich myFunction nennen, tut JavaScript-Engine Pass obj als Referenz? oder kopieren?
Also, wie kann ich das dann sehen?(duplizieren?) Wenn ein Objekt übergeben in JavaScript funktionieren

+0

in JavaScript, um alle Objekte als Referenzen betrachtet werden .. Sie in der Lage ist, es zu verstehen, während ein Objekt zu einem anderen Klonen durch einfaches Zuweisen als obj1 = obj2 jede Änderung in obj2 wird in obj1 widerspiegeln als obj2 wird eine Referenz auf obj1 –

+0

Vielen Dank für Ihre Antworten! Ich habe sofort gelöst ... –

Antwort

1

Objekt verwenden können, um durch Bezugnahme nicht von Wert übergeben. Sie müssen also vorsichtig sein, wenn Sie die Objekte in den Funktionen ändern.

Sie konnten in meinem Schnipsel hier sehen.

var o = { 
 
    'msg': 'Say Hi!' 
 
    }; 
 

 
function myFun(arg) { 
 
    console.log(arg.msg); 
 
    // This should not be accessible 
 
    // from global scope if is a copy 
 
    arg.msg = 'Bye'; 
 
} 
 

 
myFun(o); 
 

 
// Check what appened 
 
console.log(o.msg); 
 

 
// It is passed by reference.

0

Wenn es ein Objekt ist - es übergibt es als Referenz (Adresse, die auf das bestimmte Objekt zeigt). Es wird dasselbe Objekt sein. Alle in der Funktion vorgenommenen Änderungen wirken sich auf das Objekt aus.

Um eine Kopie Sie Object.assign