Im Gegensatz zu einigen anderen Sprachen kopiert JavaScript bei einer Zuweisung lediglich bei der Verwendung primitiver Datenelemente den Wert der ursprünglichen Variablen. Bei allen anderen Datenstrukturen wird nur die Referenz kopiert, was zu unerwarteten und unerwünschten Ergebnissen führen kann.
var band = {
name : 'Deep Purple',
year : 1968,
members : {
vocals : 'Rod Evans',
guitar : 'Ritchie Blackmore'
}
}
Wird einer zweiten Variablen der Wert der ersten Variable zugewiesen, so wird intern keine Kopie der Werte erzeugt, sondern lediglich die Referenz auf die Werte kopiert. Dies führt dazu, daß bei einer Änderung von “band2” auch “band” geändert wird.
var band2 = band;
band2.year = 1969;
console.log(band);
{
"name": "Deep Purple",
"year": 1969,
"members": {
"vocals": "Rod Evans",
"guitar": "Ritchie Blackmore"
}
}