[javascript] 자바스크립트 객체의 기본 프로퍼티 디스크립터

자바스크립트에서 객체는 프로퍼티와 메서드를 가지는 자료 구조입니다. 객체의 프로퍼티는 속성과 값의 쌍으로 구성되며, 각 프로퍼티는 별도의 디스크립터를 가지고 있습니다.

디스크립터는 프로퍼티의 동작 방식을 제어하는 속성들의 집합이며, 기본적으로는 내부적으로 관리됩니다. 하지만 우리는 own property descriptors를 사용하여 자체적으로 프로퍼티 디스크립터를 정의하고 제어할 수 있습니다.

객체의 프로퍼티 디스크립터는 다음과 같은 속성들을 가질 수 있습니다:

var obj = {};

Object.defineProperty(obj, 'name', {
  value: 'John',
  writable: false,
  enumerable: true,
  configurable: false
});

console.log(obj.name); // John

obj.name = 'Bob'; // Error: Cannot assign to read only property 'name'

for (var prop in obj) {
  console.log(prop); // name
}

위의 예제에서는 Object.defineProperty 메서드를 사용하여 name이라는 프로퍼티를 정의했습니다. 이 프로퍼티는 읽기 전용이므로 값을 수정할 수 없습니다. 또한 enumerable 속성이 true로 설정되어 있으므로 for…in 루프에서 열거 가능한 프로퍼티로 처리됩니다.

프로퍼티 디스크립터를 사용하면 객체의 프로퍼티를 세밀하게 제어할 수 있으며, 객체의 동작을 원하는 대로 조정할 수 있습니다. 따라서 객체의 기본 프로퍼티 디스크립터에 대한 이해는 자바스크립트 개발에서 중요한 요소입니다.

참고 자료