내부 슬롯 & 내부 메서드
는 자바스크립트 엔진에서 실제로 동작은 하지만 개발자가 직접 접근할 수 있도록 외부로 공개된 객체의 프로퍼티는 아니다.
내부 로직
이므로 자바스크립트로 직접 접근하거나 호출할 수 있는 방법을 제공하진 않는다.[[Prototype]]
내부 슬롯은 __proto__
를 통해 간접 접근 가능
Property Attribute
: 자바스크립트 엔진은 프로퍼티를 생성할 때프로퍼티 상태
를 기본값으로 자동 정의한다.
프로퍼티 상태
프로퍼티의 값( value )
값의 갱신 가능 여부( writable )
열거 가능 여부( enumerable )
정의 가능 여부( configurable )
프로퍼티 어트리뷰트에 직접 접근할 수는 없고, 간접적으로 확인
은 할 수 있다.
Object.getOwnPropertyDescriptor(객체, 프로퍼티 키)
객체의 참조(Reference)
를 전달문자열 or 심벌
을 전달
Property Descriptor Object
: 프로퍼티 어트리뷰트 정보를 제공하는 객체
존재하지 않는 프로퍼티나 상속받은 프로퍼티에 대한 프로퍼티 디스크립터를 요구하면 → undefined 반환
기본적으로 하나의 프로퍼티에 대해 프로퍼티 디스크립터 객체를 반환
모든 프로퍼티의 프로퍼티 어트리뷰트 정보
를 제공하는 프로퍼티 디스크립터 객체를 반환할 수 있게 되었다.Object.getOwnPropertyDescriptors(객체)
프로퍼티는
데이터 프로퍼티
와접근자 프로퍼티
로 구분할 수 있다.