내부 슬롯과 내부 메서드는 자바스크립트 엔진의 구현 알고리즘을 설명하기 위해 ECMAScript 사양에서 사용하는 의사 프로퍼티와 의사 메서드다.
자바스크립트 엔진은 프로퍼티를 생성할 때 프로퍼티의 상태를 나타내는 프로퍼티 어트리뷰트를 기본값으로 자동 정의한다.
이러한 프로퍼티 어트리뷰트 정보를 제공하는 프로퍼티 디스크립터 객체는 obj.getOwnPropertyDescriptor 메서드를 사용하여 확인할 수 있다.
const obj = {
name = "Jeong"
};
console.log(Object.getOwnPropertyDescriptors(obj));
value // 프로퍼티 키를 통해 프로퍼티 값에 접근하면 반환되는 값
writable // 프로퍼티 값의 변경 여부를 불리언 값으로 가짐
enumerable // 프로퍼티의 열거 가능 여부를 불리언 값으로 가짐
configurable // 프로퍼티의 재정의 가능 여부를 불리언 값으로 가짐
get // 접근자 프로퍼티를 통해 데이터 프로퍼티의 값을 읽을 때 호출되는 접근자 함수
set // 접근자 프로퍼티를 통해 데이터 프로퍼티의 값을 저장할 때 호출되는 접근자 함수
enumerable // 위와 동일
configurable // 위와 동일
구분 | 메서드 | 추가 | 삭제 | 값 읽기 | 값 쓰기 | 어트리뷰트 재정의 |
---|---|---|---|---|---|---|
객체 확장 금지 | Object.preventExtensions | x | o | o | o | o |
객체 밀봉 | Object.seal | x | x | o | o | x |
객체 동결 | Object.freeze | x | x | o | x | x |