프로퍼티 어트리뷰트

16.1 내부 슬롯과 내부 메서드

<aside> <img src="/icons/dialogue_orange.svg" alt="/icons/dialogue_orange.svg" width="40px" />

내부 슬롯 $^{internal~slot}$내부 메서드 $^{internal~method}$

자바스크립트 엔진의 구현 알고리즘을 설명하기 위해 ECMAScript 사양에서 사용하는 의사 프로퍼티 $^{pseudo~property}$ 와 의사 메서드 $^{pseudo~method}$

</aside>

그림 16-1 내부 슬롯과 내부 메서드

그림 16-1 내부 슬롯과 내부 메서드

내부 슬롯과 내부 메서드

<aside>

예를 들어, 모든 객체는 [[Prototype]]이라는 내부 슬롯을 갖는다. 내부 슬롯은 자바스크립트 엔진의 내부 로직이므로 원칙적으로 직접 접근할 수 없지만 [[Prototype]] 내부 슬롯의 경우,__proto__를 통해 간접적으로 접근할 수 있다.

</aside>

[ 예제 16-01 ]

const o = {};

// 내부 슬롯은 자바스크립트 엔진의 내부 로직이므로 직접 접근할 수 없다.
o.[[Prototype]] // → Uncaught SyntaxError: Unexpected token '['
// 단, 일부 내부 슬롯과 내부 메서드에 한하여 간접적으로 접근할 수 있는 수단을 제공하기는 한다.
o.__proto__ // → Object.prototype

16.2 프로퍼티 어트리뷰트와 프로퍼티 디스크립터 객체