ES5 방식에서 생성자, __proto__ 지정 외에 상속하는 신문법.
지금까지 생성자와 prototype을 활용한 상속을 살펴봤고,
function 생성자로 new를 통해 인스턴스를 만드는 방식이 아닌, 그냥 객체를 prototype으로 상속받고싶을 경우
상속할 객체.__proto__ = 상속하고싶은 객체;
이런 식으로 상속이 이뤄진다했다.
이런 식으로...
하지만 ES5부터는 좀 더 쉽게 객체를 부모 prototype으로 상속받을 수 있다.
바로 Object.create()를 사용해서 말이다.
이런식으로 const 자식 = Object.create(상속할 객체 이름);
을 해주면 된다.
그럼 __proto__ = 와 똑같은 기능을한다.
어쨋든 prototype으로 상속하는것이라 자식 인스턴스들은 직접적으로 prototype의 변수화 함수를 갖지않지만,
호출해서 얼마든지 prototype 내의 변수, 함수를 사용할 수 있다.
역시 상속된 인스턴스를 Object.create()에 인자로 집어넣어,
상속된 인스턴스를 다시 상속하는 손자 객체도 만들 수 있다.
그러면 할아버지 객체는 name이라는 프로퍼티의 value가 Jack인데,
바로 하위 자식 객체의 name이 Mina이고,
손자 객체의 name을 호출하면 어떻게될까?
답은 Mina가 나온다.
왜냐면 prototype으로 상속된 데이터들은 참조가 시작되면 가장 가까운 상위 객체부터 차례로 윗쪽 탐색을
진행하기때문이다.
물론 손자 객체에 name을 지정해주면 상위 탐색을 할 필요도 없이 그 본인의 name을 반환한다.
참고로 Object라는 객체는 getPrototypeOf() 이라는 함수를 또 제공하는데,
console.log(Object.getPrototypeOf(자식 객체));
를 출력하면 부모 prototype을 보여준다.
그러니까 console.log(자식 객체.__proto__);
와 같은 기능을한다.