[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. 접근자 프로퍼티 활용

접근자 프로퍼티를 사용하여 객체에 대한 접근을 제어할 수 있습니다. getset을 사용하여 프로퍼티에 대한 읽기 및 쓰기 권한을 제어할 수 있습니다.

아래는 접근자 프로퍼티를 사용한 예제 코드입니다:

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