[javascript] 프로토타입 체인에서의 엑세스 제한 방법
자바스크립트의 프로토타입 체인은 개발자가 객체 간에 속성을 공유하고 상속을 구현할 수 있도록 하는 강력한 기능입니다. 그러나 때로는 특정 프로퍼티에 대한 접근을 제한해야 할 필요가 있을 수 있습니다. 이러한 경우를 다루기 위한 몇 가지 기술을 살펴보겠습니다.
1. 접근 제어를 위한 심볼 프로퍼티 활용
ES6부터 도입된 심볼(Symbol)을 활용하여 프로퍼티에 대한 보호 메커니즘을 만들 수 있습니다. 심볼은 고유하며 불변적인 특성을 가지고 있어, 다른 객체에서 접근할 수 없도록 보호할 수 있습니다.
아래는 심볼로 프로퍼티를 보호하는 간단한 예제 코드입니다:
const _protectedProperty = Symbol('protected');
class MyClass {
constructor() {
this[_protectedProperty] = 'protected value';
}
getProtectedProperty() {
return this[_protectedProperty];
}
}
let instance = new MyClass();
console.log(instance.getProtectedProperty()); // 'protected value'
console.log(instance[_protectedProperty]); // undefined (접근 불가)
2. 접근자 프로퍼티 활용
접근자 프로퍼티를 사용하여 객체에 대한 접근을 제어할 수 있습니다. get
과 set
을 사용하여 프로퍼티에 대한 읽기 및 쓰기 권한을 제어할 수 있습니다.
아래는 접근자 프로퍼티를 사용한 예제 코드입니다:
let _privateProperty = 'private value';
let myObject = {
get privateProperty() {
return _privateProperty;
},
set privateProperty(value) {
// 추가적인 로직이나 검증을 수행할 수 있음
_privateProperty = value;
}
};
console.log(myObject.privateProperty); // 'private value'
myObject.privateProperty = 'new value';
console.log(myObject.privateProperty); // 'new value'
결론
프로토타입 체인에서의 접근 제어는 심볼 프로퍼티나 접근자 프로퍼티를 활용하여 구현할 수 있습니다. 이러한 기술을 적절히 활용하여 객체의 보안성을 높이고 원치 않는 접근을 효과적으로 제어할 수 있습니다.
이러한 기술을 사용하여 객체의 보안성을 높이고, 원치 않는 접근을 효과적으로 제어할 수 있습니다.
참고 문헌
원본 블로그 글: How to Restrict Access in JavaScript Prototype Chain