🔑 키워드 정리
- 프로퍼티 어트리뷰트 : 프로퍼티의 상태를 나타내는 값을 말한다. 자바스크립트 엔진이 프로퍼티를 생성할 때 자동으로 정의한다.
- 프로토타입 : 어떤 객체의 상위 객체의 역할을 하는 객체다. 19장에서 자세히 다룬다.
📗 내용 정리
내부 슬롯, 내부 메서드
자바스크립트 엔진의 내부 로직으로 ECMAScript 사양에서 이중 대괄호([[ ... ]])로 감싼 이름들이다. __proto__를 통해 간접적으로 접근할 수 있다. Object.getOwnPropertyDescriptor 메서드는 프로퍼티 디스크립터 객체를 반환한다. 객체 정보에는 프로퍼티 값(value), 값의 갱신 가능 여부(writable), 열거 가능 여부(enumerable), 재정의 가능 여부(configurable)가 있다.
데이터 프로퍼티
프로퍼티 어트리뷰트 | 프로퍼티 디스크립터 객체의 프로퍼티 |
설명 |
[[Value]] | value | 프로퍼티 값 |
[[Writable]] | writable | 값의 갱신 가능 여부. 불리언 값 |
[[Enumerable]] | enumerable | 열거 가능 여부. 불리언 값 |
[[Configurable]] | configurable | 재정의 가능 여부. 불리언 값 |
접근자 프로퍼티
자체적으로 값(프로퍼티 어트리뷰트의 [[Value]])을 가지지 않으며, 데이터 프로퍼티의 값을 읽거나 저장할 때만 사용하는 접근자 함수로 구성되어 있다.
프로퍼티 어트리뷰트 | 프로퍼티 디스크립터 객체의 프로퍼티 |
설명 |
[[Get]] | get | 접근자 함수. getter 함수가 호출되고 값이 반환된다. |
[[Writable]] | writable | 접근자 함수. setter 함수가 호출되고 값이 저장된다. |
[[Enumerable]] | enumerable | |
[[Configurable]] | configurable |
프로퍼티 정의
프로퍼티 어트리뷰트를 정의하거나 재정의하는 것을 말한다. Object.defineProperty 메서드(복수 객체 정의는 Object.defineProperties)를 사용해서 정의할 수 있다. 단, [[Configurable]] 값이 false인 경우 해당 프로퍼티를 삭제하거나 재정의할 수 없다.
'Today I Learned' 카테고리의 다른 글
모던 자바스크립트 Deep Dive 18장 함수와 일급 객체 (0) | 2022.03.01 |
---|---|
모던 자바스크립트 Deep Dive 17장 생성자 함수에 의한 객체 생성 (0) | 2022.03.01 |
모던 자바스크립트 Deep Dive 15장 let, const 키워드와 블록 레벨 스코프 (0) | 2022.02.21 |
모던 자바스크립트 Deep Dive 14장 전역 변수의 문제점 (0) | 2022.02.21 |
모던 자바스크립트 Deep Dive 13장 스코프 (0) | 2022.02.13 |