hallo, ich habe mir vor kurzem diese Funktion geschrieben:
die Funktion füllt ein Objekt mit den Werten eines anderen Objektes. Vererbung sozusagen.
komischerweise funktioniert dabei folgendes:
a = {a:1,b:2};
b = {a:2};
fill(a, b);
lese ich jetzt a aus, ist a {a:2, b:2}
wie kann das sein, wenn ich a nicht zuweise?
Was außerdem komisch ist, dass sich alle objekte verändern, die ich vorher mit a gleich gesetzt habe:
a = {a:1,b:2};
b = {a:2};
c = a;
fill(a, b);
jetzt ist a {a:2, b:2} und c auch. Habe ich etwas an JavaScript nicht verstanden, oder was soll das?
Code:
fill = function(object, props) {
for (var i in props) {
if (typeof object[i] == "object") {
object[i] = this.fill(object[i], props[i]);
} else {
object[i] = props[i];
}
}
return object;
}
komischerweise funktioniert dabei folgendes:
a = {a:1,b:2};
b = {a:2};
fill(a, b);
lese ich jetzt a aus, ist a {a:2, b:2}
wie kann das sein, wenn ich a nicht zuweise?
Was außerdem komisch ist, dass sich alle objekte verändern, die ich vorher mit a gleich gesetzt habe:
a = {a:1,b:2};
b = {a:2};
c = a;
fill(a, b);
jetzt ist a {a:2, b:2} und c auch. Habe ich etwas an JavaScript nicht verstanden, oder was soll das?