본문 바로가기

new Proxy를 사용하여 객체에 대한 프록시 생성

@Prof.SSong2025. 1. 9. 14:46
728x90
반응형

프록시(Proxy)란 무엇인가? 🤔

프록시는 자바스크립트에서 객체를 감싸고, 그 객체에 대한 접근을 가로채는 역할을 하는 객체에요.

즉, 특정 객체에 대한 모든 작업을 중간에서 가로채서, 원하는 대로 조작할 수 있게 해주는 기능이죠.

 

이 기능은 객체의 프로퍼티에 대한 접근을 제어하거나, 특정 조건을 만족하지 않는 경우

에러를 발생시키는 등의 유효성 검사를 가능하게 해줘요.

 

프록시의 기본 개념

프록시는 두 가지 주요 요소로 구성돼요.

첫 번째는 '타겟(target)' 객체이고, 두 번째는 '핸들러(handler)' 객체에요.

타겟 객체는 실제로 우리가 작업할 객체이고, 핸들러 객체는 타겟 객체에 대한 작업을 가로채고 조작하는 메서드를 포함해요.

예를 들어, 핸들러 객체는 get, set, has 등의 메서드를 정의할 수 있어요.

 

프록시를 사용하는 이유

프록시를 사용하는 이유는 다양해요.

가장 큰 이유 중 하나는 객체의 프로퍼티에 대한 유효성 검사를 수행할 수 있다는 점이에요.

예를 들어, 사용자가 객체의 프로퍼티에 잘못된 값을 할당하려고 할 때, 이를 방지할 수 있는 방법을 제공해줘요.

또한, 디버깅을 쉽게 하거나, 로깅 기능을 추가하는 데에도 유용해요.

 

프록시를 통한 객체의 유효성 검사

프록시를 사용하면 객체의 프로퍼티에 대한 유효성 검사를 쉽게 구현할 수 있어요.

예를 들어, 사용자의 나이가 음수가 되지 않도록 하거나, 이름의 길이를 제한하는 등의 작업을 할 수 있죠.

아래는 간단한 예시 코드에요.

 

const person = {
    name: '이름을 입력하세요',
    age: 0
};

const proxyPerson = new Proxy(person, {
    set(target, property, value) {
        if (property === 'name' && typeof value === 'string') {
            target[property] = value;
            return true;
        }
        if (property === 'age' && typeof value === 'number') {
            target[property] = value;
            return true;
        }
        return false; // 유효하지 않은 값일 경우
    }
});

// 정상 작동
proxyPerson.name = '홍길동'; // name 속성 설정
proxyPerson.age = 30; // age 속성 설정

console.log(proxyPerson); // 결과 확인

위 코드에서 set 메서드는 프로퍼티에 값을 설정할 때 유효성을 검사해요.

만약 잘못된 값이 들어오면 에러를 발생시키고, 올바른 값일 경우에는 타겟 객체에 값을 설정해줘요.

 

프록시의 장점과 단점

프록시의 장점은 유효성 검사 외에도 다양한 기능을 추가할 수 있다는 점이에요.

예를 들어, 객체의 접근을 로깅하거나, 특정 조건에 따라 값을 변형하는 등의 작업을 할 수 있어요.

하지만 단점으로는 성능 저하가 있을 수 있다는 점이에요.

프록시를 사용하면 모든 접근이 핸들러를 거치기 때문에, 성능에 영향을 줄 수 있어요.

 

프록시 사용 시 주의사항

프록시를 사용할 때는 몇 가지 주의사항이 있어요.

첫째, 너무 복잡한 핸들러를 만들면 코드가 복잡해질 수 있어요.

둘째, 성능 저하를 고려해야 해요.

 

마지막으로, 프록시를 사용한 객체는 일반 객체와는 다르게 동작할 수 있으므로, 이를 잘 이해하고 사용해야 해요.

 

프록시를 통해 객체를 다루는 방법을 이해하고 활용하면, 더 안전하고 효율적인 코드를 작성할 수 있어요.

여러분도 프록시를 활용해보세요! 😊

 

 

728x90
반응형
목차