[javascript] 객체의 프로퍼티를 쓸 수 있는/읽을 수 있는지 설정하는 방법

자바스크립트에서 객체의 프로퍼티에 대한 쓰기 및 읽기 권한을 설정하는 것은 중요합니다. 이를 통해 객체의 데이터에 대한 보안을 강화하거나 특정 동작을 제어할 수 있습니다. 다음은 이러한 권한을 설정하는 방법입니다.

프로퍼티에 대한 읽기 전용 설정

특정 프로퍼티를 읽기 전용으로 만들려면 Object.defineProperty 메서드를 사용합니다. 다음은 읽기 전용으로 설정하는 예제입니다.

const obj = {};

Object.defineProperty(obj, 'readOnlyProp', {
  value: 'This property is read-only',
  writable: false
});

console.log(obj.readOnlyProp); // 출력: This property is read-only
obj.readOnlyProp = 'Trying to update'; // TypeError: Cannot assign to read only property 'readOnlyProp'

위의 예제에서 readOnlyProp을 읽기 전용으로 설정했기 때문에 값을 변경할 수 없습니다.

프로퍼티에 대한 쓰기 전용 설정

이와 비슷하게, 특정 프로퍼티를 쓰기 전용으로 만들 수도 있습니다. 다음은 쓰기 전용으로 설정하는 예제입니다.

const obj = {};

Object.defineProperty(obj, 'writeOnlyProp', {
  value: 'This property is write-only',
  get: function() {
    return this.value;
  },
  set: function(newValue) {
    this.value = 'Overwritten by ' + newValue;
  }
});

console.log(obj.writeOnlyProp); // 출력: This property is write-only
obj.writeOnlyProp = 'Trying to overwrite'; // writeOnlyProp의 값이 업데이트되지만 완전히 다른 방식으로 변경됩니다.
console.log(obj.writeOnlyProp); // 출력: Overwritten by Trying to overwrite

위의 예제에서 writeOnlyProp은 외부에서 값을 읽을 수 없지만, 값을 쓸 때는 내부적으로 변경됩니다.

객체의 프로퍼티 접근 제한하기

또 다른 방법으로 객체의 모든 프로퍼티에 대한 접근을 완전히 제한하는 것이 있습니다. 이를 위해서는 Object.seal 또는 Object.freeze을 사용합니다.

이러한 메서드를 사용하여 객체의 내부 상태를 보호할 수 있습니다.

위의 방법들은 자바스크립트에서 프로퍼티에 대한 쓰기/읽기 권한을 설정하는 몇 가지 방법 중 일부입니다. 이러한 권한 설정은 객체의 안정성과 보안에 중요한 역할을 합니다.