JS (Java Script)

Object.create() ES5 문법. 상속기능 구현.

GABOJOK 2023. 9. 7. 17:23

 

let a = Object.create(b) 

이렇게 하면, a는 b의 모든 요소를 물려받는다. 

a의 프로토타입으로 b를 넣는 방법으로!

 

object 에서 부모가 가진 요소를 그대로 물려받는 방법 1. constructor / 2.Object.create() / 3.class

 

var 부모= { name : 'kim', age: 50};
var 자식 = Object.create(부모);   

console.log(자식);  //{} 출력됨
console.log(자식.name, 자식.age);  //kim 50 출력됨. 

자식.age = 20;
console.log(자식);    //20 출력 //직접 할당한 것임으로.

var 손자 = Object.create(자식);
console.log(손자.name, 손자.age)   //kim, 20 출력됨.

 

console.log(자식);  을 했을때에, {} 출력되는 것을 확인할 수 있다.

{name : 'kim', age : 50}이 나올줄 알았는데 말이다. 

이유는, 자식 에는 object 를 할당한 적이 없다.

 

자식 이라는 변수에 prototype 를 부모 라는 객체로 해준다는 말 이기 때문이다.

 

그렇지만 console.log(자식.name, 자식.age);  을 하면 kim 50 출력된다.

자식에서 .name을 찾는데 없으니 자식의 prototype에 숨겨둔 부모 에서 .name을 찾는거다.

 

손자 라는 변수의 경우도 마찬가지 이다. 

 손자.name 은 부모의 부모 요소 까지 상속가능하기 때문에 나온 결과.