[javascript] 프로퍼티 디스크립터를 통한 프로퍼티 속성 읽기 전용 설정

자바스크립트에서는 프로퍼티 디스크립터를 이용하여 프로퍼티의 속성을 설정할 수 있습니다. 이 중에서 읽기 전용 속성을 설정하는 방법에 대해 알아보겠습니다.

프로퍼티 디스크립터란?

프로퍼티 디스크립터(property descriptor)는 프로퍼티의 속성을 정의하는 데 사용되는 객체입니다. 프로퍼티 디스크립터 객체는 Object.defineProperty() 메서드를 사용하여 프로퍼티에 덧붙일 수 있습니다.

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

읽기 전용 속성 설정 방법

읽기 전용 속성을 설정하려면 프로퍼티 디스크립터 객체의 writable 속성을 false로 설정하면 됩니다. 다음은 예제 코드입니다:

const obj = {};

Object.defineProperty(obj, 'readOnlyProp', {
  value: 'read only',
  writable: false,
  enumerable: true,
  configurable: false
});

console.log(obj.readOnlyProp); // 출력: 'read only'

obj.readOnlyProp = 'attempt to change'; // 에러 발생: Cannot assign to read only property 'readOnlyProp'

위 코드에서 Object.defineProperty() 메서드를 사용하여 obj 객체의 readOnlyProp 프로퍼티에 프로퍼티 디스크립터를 설정하고 있습니다. writable 속성을 false로 설정하여 읽기 전용 속성으로 만들었습니다.

따라서 obj.readOnlyProp을 읽을 수는 있지만, 값을 변경하려고 할 때 에러가 발생합니다.

결론

프로퍼티 디스크립터를 이용하면 자바스크립트 객체의 프로퍼티를 더 세밀하게 제어할 수 있습니다. writable 속성을 false로 설정하여 프로퍼티를 읽기 전용으로 만들 수 있습니다.

더 자세한 내용은 MDN 문서를 참고하세요.