320x100
반응형
자바스크립트에는 객체 지향 언어이지만 클래스가 존재하지 않아 상속 기능도 없다
그대신 프로토타입 이라는 것이 존재한다 =>프로토 타입은 원형(유전자)라는 뜻
함수 객체에는 프로토타입이라는 특수한 유형의 객체 프로퍼티(속성)가 존재하며 (객체 !== 프로퍼티)
이러한 prototype 프로퍼티를 통해 생성자 함수는 인스턴스에게 프로토타입 객체에 있는 데이터, 메소드를 상속한다
Prototype Object | 함수를 정의하면 생성되는 객체 |
Prototype Link (__proto__) | 자신을 만들어낸 객체의 원형을 참조 |
Constructor | 함수를 정의하면 부여되는 생선자 자격 new 키워드를 이용해 객체를 만듬 |
prototype Link 와 Prototype Object, 이 둘을 통틀어 prototype이라고 합니다.
Prototype Object
자바스크립트의 모든 객체는 자신의 부모 역할을 담당하는 객체와 연결되어 있다. 그리고 이것은 마치 객체 지향의 상속 개념과 같이 부모
객체의 프로퍼티 또는 메소드를 상속받아 사용할 수 있게 한다
=>부모 객체를 Prototype(프로토타입) 객체 또는 줄여서 Prototype(프로토타입)이라 한다.
Prototype Link
prototype Link 인 __proto__ 는 모든 객체가 가지는 속성이며 상위 프로토타입 간 연결을 해준다
__proto__ 속성의 특징 덕분에 프로토타입 체인 형태를 가질수 있다
프로토타입 체인
인스턴스 객체의 key에 접근할 때, 해당 객체에게 key가 없다면 그 다음으로 상위 프로토타입(원형) 속성에서 key가 있는지 확인한다.
없다면 그것을 찾기 위해 더 상위의 프로토타입(부모)에서 찾는다. 이것을 프로토타입 체인이라고 한다.
let div = document.createElement('div');
div.__proto__ // HTMLDivElement {...}
div.__proto__.__proto__ // HTMLElement {...}
div.__proto__.__proto__.__proto__ // Element {...}
div.__proto__.__proto__.__proto__.__proto__ // Node {...}
div.__proto__.__proto__.__proto__.__proto__.__proto__ // EventTarget {...}
div.__proto__.__proto__.__proto__.__proto__.__proto__.__proto__ // Object
div.__proto__.__proto__.__proto__.__proto__.__proto__.__proto__.__proto__ // null
728x90
반응형
'Javascript' 카테고리의 다른 글
번들링 & 웹팩 (0) | 2022.11.23 |
---|---|
비동기처리 (콜백함수, Promise, async/await) (0) | 2022.11.02 |
객체 지향 프로그래밍(oop) (1) | 2022.09.21 |
클래스(class)와 인스턴스(instance) (2) | 2022.09.21 |
일급객체와 고차함수 (0) | 2022.09.20 |