[javascript] 프로토타입 체인에서 객체 속성 숨기기
자바스크립트에서 객체는 프로토타입 체인을 통해 상위 객체의 속성을 상속받습니다. 때때로 객체의 속성을 숨기고 외부로부터 보호해야 할 필요가 있습니다. 이러한 상황에서는 몇 가지 방법을 사용하여 객체의 속성을 숨길 수 있습니다.
1. 접두어 사용
객체 속성 이름에 특정 접두어를 추가하여 외부에서의 접근을 제한할 수 있습니다. 이는 관례적으로 _
나 $
와 같은 문자로 시작하는 속성 이름을 통해 객체의 비공개 속성을 나타내는 것입니다.
function MyObject() {
this._hiddenProperty = 42;
}
2. 클로저 활용
클로저를 사용하여 객체 내부의 데이터를 숨길 수 있습니다. 외부에서 접근할 수 없는 내부 함수를 통해 객체의 상태를 조작하고 노출시키지 않습니다.
function createObject() {
let _hiddenProperty = 42;
return {
getHiddenProperty: function() {
return _hiddenProperty;
}
};
}
3. Object.defineProperty 사용
Object.defineProperty
메서드를 사용하여 속성을 정의하고 속성의 속성을 설정함으로써 객체의 속성을 숨길 수 있습니다.
let obj = {};
Object.defineProperty(obj, 'hiddenProperty', {
value: 42,
writable: false,
enumerable: false
});
이러한 방법들을 사용하여 프로토타입 체인에서 객체 속성을 숨길 수 있습니다. 하지만 완전한 보호는 되지 않으며, 일부 방법을 사용하면 속성에 여전히 접근할 수 있습니다. 이러한 보안적인 측면을 고려하여 객체 속성을 숨겨야 할 필요성을 심사숙고하고 적절한 방법을 선택해야 합니다.