JS의 프로토 타입 상속과 관련된 프로젝트에서 한 가지 문제가 발생했습니다. 그리고 추상적 주요 문제로 다음javascript : 프로토 타입 상속에 대한 혼란스러운 점
var parentObj = {
value:"parent value",
obj: {
obj: "parent obj value"
}
}
var childObj = Object.create(parentObj)
리터럴 객체 방법으로 parentObj
을 만들고, 그것을 기반으로 childObj
를 작성하고 프로토 타입을 만든다.
및 제 경우
다음과 같이childObj.value ="child value"
childObj.obj = {obj:"child obj value"};
console.log(parentObj)
console.log(childObj)
출력은 예상대로
{ value: 'parent value', obj: { obj: 'parent obj value' } }
{ value: 'child value', obj: { obj: 'child obj value' } }
이 결과 간다.
그러나 후자의 경우에 대해서는 다음과 같은
:childObj.value ="child value"
childObj.obj.obj = "child obj value";
console.log(parentObj);
console.log(childObj);
출력은 :
{ value: 'parent value', obj: { obj: 'child obj value' } }
{ value: 'child value' }
parentObj
가 변경되었다. 이 결과는 나에게 조금 혼란 스럽다.
나는 그것이 자식 개체 만 "아이 OBJ 값"을 반환 생각하는 것이 좋습니다. 다시 한번 확인해 주시겠습니까? 또는 childObj .__ proto__를 확인하면 parentObj가 표시됩니다. – Nitesh
@ Nitesh, 내가 게시 한 결과를 확인했습니다. –
'childObj.obj' 속성을 읽으면 프로토 타입 상속을 사용하고'parent.obj'를 얻습니다. 이 시점에서,'childObj.obj'와'parentObj.obj'는 같은 객체에 대한 참조이므로, 두 객체 모두에서 그 객체에 대한 수정을 볼 수 있습니다. –