[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
을 사용합니다.
Object.seal
은 프로퍼티의 추가와 삭제는 허용하지만, 프로퍼티의 설정을 변경하는 것을 막습니다.Object.freeze
는 프로퍼티의 추가, 삭제, 설정 변경을 모두 막습니다.
이러한 메서드를 사용하여 객체의 내부 상태를 보호할 수 있습니다.
위의 방법들은 자바스크립트에서 프로퍼티에 대한 쓰기/읽기 권한을 설정하는 몇 가지 방법 중 일부입니다. 이러한 권한 설정은 객체의 안정성과 보안에 중요한 역할을 합니다.