객체 프로퍼티 설명자

정수·2023년 3월 16일
0

JavaScript

목록 보기
12/15
post-thumbnail

객체 프로퍼티에선 해당 속성을 알려주는 설명자(descriptor)라는 것이 존재합니다. 설명자는 프로퍼티가 데이터 프로퍼티 인가 접근자 프로퍼티 인가에 따라 구성에 차이가 있기에 두 경우로 나눠서 게시글을 작성하도록 하겠습니다. 해당 게시글에선 데이터 프로퍼티의 설명자에 대한 게시글입니다.

데이터 프로퍼티의 설명자를 데이터 설명자(data descriptor)라고 하며 해당 설명자에는 4가지의 attributes가 존재합니다. 해당 attributes의 값은 Object.getOwnPropertyDescriptor(obj, prop)을 통해 확인 가능하며 Object.defineProperty(obj, prop, descriptor)을 사용하여 변경 가능합니다.

01. value

해당 프로퍼티의 값을 할당합니다. 기본값은 undefined입니다.

02. configurable

configurable(구성 가능성)false인 경우, configurable, enumerable의 속성 변경이 불가하며 delete도 불가합니다. 기본값은 false입니다.

03. enumerable

enumerable(열거 가능성)false인 경우, 객체 속성을 열거할 수 없습니다. 즉, for...in, Object.keys() 등과 같은 반복문 사용이 불가합니다. 기본값은 false입니다.

04. writable

writable(작성 가능성)false인 경우, 해당 을 수정할 수 없습니다. 다만 참조값을 변경하는 것은 가능합니다. 기본값은 false입니다.

var x = 1;
y = 1;

Object.getOwnPropertyDescriptor(window, 'x');
// {
//   configurable: false,
//   enumerable: true,
//   value: 1,
//   writable: true
// }

Object.getOwnPropertyDescriptor(window, 'y');
// {
//   configurable: true,
//   enumerable: true,
//   value: 1,
//   writable: true
// }

+) 위 코드를 확인해보면 암묵적 전역으로 생성된 변수의 경우 configurable의 값이 true인 것을 확인할 수 있습니다. 그래서 delete가 가능합니다.


참고 자료

profile
해피한하루

0개의 댓글