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