내부슬롯과 내부메서드는 JS 엔진의 구현 알고리즘을 설명하기 위한 내부로직으로 직접 접근이 불가능하다

일부 내부슬롯과 내부메서드 중에서 간접적으로 접근 가능한 것이 있는데

 

모든 객체는 [[Prototype]] 이라는 내부슬롯을 가지고 __proto__를 통해 간접 접근이 가능하다

 

또 내부슬롯 중 하나인 프로퍼티의 상태를 나타내는 어트리뷰트 역시 Object.getOwnPropertyDescriptor로 간접 접근이 가능하다.

 

프로퍼티의 상태 요소는 일반적으로 값, 갱신가능 여부, 열거가능 여부, 재정의가능 여부를 말한다.

 

프로퍼티의 종류는 데이터 프로퍼티, 접근자 프로퍼티가 있으며, 데이터 프로퍼티는 일반적인 우리가 아는 프로퍼티이고

접근자 프로퍼티는 다른 데이터 프로퍼티를 읽거나, 저장할 때 호출되는 접근자 함수로 구성된 프로퍼티이다.

 

접근자 프로퍼티의 상태 요소는 get, set, 열거가능 여부, 재정의가능 여부 등이 있다. 

 

get은 데이터 프로퍼티에 접근할 때 getter 함수를 호출하여 데이터 프로퍼티의 값을 반환한다.

set은 데이터 프로퍼티에 값을 저장할 때 호출되는 접근자 함수다. 접근자 프로퍼티 키로 데이터 프로퍼티 값을 저장하면 setter 함수가 호출되고 그 결과 프로퍼티 값으로 저장된다.

 

Object.defineProperty 메서드를 사용하면 프로퍼티의 어트리뷰트를 정의, 재정의 할 수 있다.

정의할 때 생략한 어트리뷰트는 value, get, set은 undefined로 writable, enumerable, configurable는 false가 기본값으로 적용된다. 

 

객체변경방지 

 

객체 확장금지 Object.preventExtensions 객체 추가가 금지된다. 삭제, 읽기, 쓰기, 재정의는 가능하다.

객체 밀봉 Object.seal 프로퍼티 추가, 삭제, 재정의가 금지된다. 읽기와 쓰기는 가능하다.

객체 동결 Object.freeze 읽기 외엔 모두 금지된다. 

 

 

 

+ Recent posts