JavaScript

javaScript-프로퍼티 어트리뷰트(내부 슬롯과 내부 메서드)

용용it 2023. 3. 4. 09:47

프로퍼티 어트리 뷰트를 이해하기 위해 먼저

내부 슬롯내부 메서드의 개념을 알아야한다.

 

내부 슬롯과 내부 메서드는 자바스크립트 엔진의 구현 알고리즘을 설명하기 위해

ECMAscript 사양에서 사용하는 의사 프로퍼티의사 메서드다.

 

ECMAScript 사양에 등장하는 이중 대괄호 ([[...]])로 감싼 이름들이 내부 슬롯내부 메서드다.

 

내부 슬롯과 내부 메서드는 ECMAScript 사양에 정의된 대로 구현되어 자바스크립트 엔진에서 실제로 동작하지만 개발자가 직접 접근할 수 있도록 외부로 공개된 객체의 프로퍼티는 아니다.

 

즉, 내부 슬롯내부 메서드는 자바스크립트 엔진의 내부 로직이므로 원칙적으로 자바스크립트는 내부 슬롯과 내부 메서드에 직접적으로 접근하거나 호출할 수 있는 방법을 제공하지 않는다.

 

단, 일부 내부 슬롯과 내부 메서드에 한하여 간접적으로 접근할 수 있는 수단을 제공하기는 한다.

 

예시로, 모든 객체는 [[Prototype]] 이라는 내부 슬롯을 갖는다.

 

내부 슬롯은 자바스크립트 엔진의 내부로직이므로 원칙적으로 직접 접근 할 수 없지만

[[Prototype]] 내부 슬롯의 경우, _ _proto_ _ 를 통해 간접적으로 접근할 수 있다.

 

const o = {};

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