Ich muss etwas falsch machen.ES6 Wie wird sichergestellt, dass aktualisierte Kloneigenschaften keine Auswirkungen auf das Original haben?
- Instantiate Klasse Person als Bob mit dem Namen 'Bob'
- Clone Bob als neue var Alice
- Rename Alice mit dem Namen 'Alice'
- Log Namen von Bob & Alice
Ich erwarte, dass Bobs Name 'Bob' bleibt, aber es wurde auf 'Alice' aktualisiert, obwohl Bob nicht aktualisiert wurde ...?
class Person {
constructor(attr) {
this.attr = attr;
}
talk() {
console.log('My name is ' + this.attr.name);
}
}
function clone(obj) {
return Object.assign(Object.create(Object.getPrototypeOf(obj)), obj);
}
var Bob = new Person({
name: 'Bob'
});
var Alice = clone(Bob);
Alice.attr.name = 'Alice';
Alice.talk();
Bob.talk();
Vielen Dank im Voraus.
Wie klonen Sie das Objekt? – Intervalia
Sie klonten nur 'Bob'. Sie haben das Attr-Objekt nicht geklont. Speichern Sie Werte auf dem Objekt selbst, nicht in einem verschachtelten Objekt! – Bergi