[JavaScript] 객체 prototype의 이해
prototype?
prototype은 원형, 초기 형태라는 의미를 가지고 있는데, 자바스크립트에서 prototype은 유전자라고 생각하면 된다.
어떤 한 객체의 prototype을 조회한다고 하면 객체가 가지고 있는 변수나 함수같은 것이 조회가되어 그 객체가 어떤 속성을 가지고 있는지 확인할 수 있다.
객체의 부모, 자식 관계
위 스크립트 코드는 userInfo객체를 생성하여 그 안의 속성을 정의한 후,
callUserInfo에 userInfo객체를 할당하여 자식 객체를 만들어 그것을 로그로 찍은 코드이다.
부모객체인 userInfo를 상속 받은 callUserInfo를 로그로 찍어보면 아래의 결과를 볼 수 있다.
이처럼 자식 객체는 부모 객체의 속성을 접근할 수 있다는 것을 알 수 있다.
이를 이용해 부모 객체의 속성을 재정의하여 코드의 재사용성을 높일 수 있다.
부모 객체인 userInfo를 상속 받은 defaultUserInfo와 firstUserInfo가 있다.
defaultUserInfo 처럼 상속 받은 그대로 콘솔에 찍어보면 부모 객체인 userInfo가 가지고 있는 속성 값들이 출력될 것이다.
하지만 firstUserInfo는 부모객체인 userInfo의 속성 값들을 재정의 하여 출력한 것을 볼 수 있다.
20Line처럼 자식 객체만의 속성 값을 별도로 추가할 수도 있다.
결과화면
부모 객체와 자식 객체는 계층 구조를 가지고 있다.
부모 객체를 상속받은 자식객체에서 찾고자 하는 값이 없으면 그 객체의 부모 객체를 뒤지게 된다.
부모 객체에도 없으면 그 위의 부모 객체를 뒤지게 되는 계층 구조를 갖게된다.
또, prototype을 이용하여 모든 자식 객체들에게 부모가 가지고 있는 속성 값 외에도
값을 추가로 상속 받게 할 수도 있다.
결과화면