나는 뭔가 잘못하고 있어야합니다.ES6 업데이트 된 복제 속성이 원본에 영향을 미치지 않는지 확인하는 방법?
-
이름 밥 이름으로 새로운 VAR 앨리스
- 이름 바꾸기 앨리스 밥 &의 '앨리스'
- 로그인 이름과 같은 '밥'
- 복제 밥 앨리스
- 인스턴스화 Person 클래스
나는 Bob의 이름이 'Bob'으로 남아있을 것이라고 기대하지만, Bob을 업데이트하지는 않았지만 'Alice'로 업데이트되었습니다 ...? 사전에
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();
감사합니다.
어떻게 개체를 복제하는 :
는 복제에 더 나은 통찰력을 위해, 당신은이 문서를 참조 할 수 있습니다? – Intervalia
'Bob'만 복제했습니다. 당신은'attr' 객체를 복제하지 않았습니다. 중첩 된 객체가 아닌 객체 자체에 값을 저장하십시오! – Bergi