Kimsora✨
article thumbnail
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
profile

Kimsora✨

@sorarar

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그

WH