9. 프로토타입 체이닝
- 자바스크립트는 객체지향 언어가 아닌 프로토타입 기반 객체지향 언어이다.
- 따라서 자바스크립트는 클래스 개념이 없다. 이 때문에 객체 리터럴 또는 생성자 함수로 객체를 생성하는데,
이렇게 생성된 객체의 부모 객체가 바로 '프로토타입 객체'인 것이다.
- 상속 개념과 마찬가지로, 자식 객체는 부모 객체가 가지고 있는 프로퍼티 접근이나 메서드를 상속받아 호출하는 것이 가능하다.
9-(1) [[Prototype]] 링크
- JS의 모든 객체는 자신의 부모인 프로토타입 객체를 가리키는 참조링크 형태의 숨겨진 프로퍼티가 있다.
- ECMA Script 에서는 이러한 링크를 "암묵적 프로토타입 링크" 라고 부르며 이러한 링크는 모든 객체의 [[Prototype]]프로퍼티에 저장된다.
* 여기서 자바스크립트의 객체 생성 규칙을 다시 한 번 알아보자.
- JS에서 모든 객체는 자신을 생성한 함수의 prototype프로퍼티가 가리키는 프로토타입 객체를 자신의 부모 객체로 설정하는 [[Prototype]]링크로 연결한다.
9-(2) 프로토타입 체이닝이란?
- 자바스크립트에서 객체는 자기 자신의 프로퍼티 뿐 아니라, 자신의 부모역할을 하는 프로토타입 객체의 프로퍼티 또한 마치 자신의 것처럼 접근하는 게 가능하다고 했다.
이것을 가능하게 하는 것이 "프로토타입 체이닝" 이다.
*hasOwnProperty() 메서드를 예시로 들어보자.
- hasOwnProperty() 메서드 : 이 메서드를 호출한 객체에 인자로 넘긴 문자열 이름의 프로퍼티나 메서드가 있는지 체크하는 자바스크립트 표준 API 함수다.
예시)
댓글 영역