"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > JavaScript는 예측할 수 없는 속성에 대한 동적 Getter 및 Setter를 구현할 수 있습니까?

JavaScript는 예측할 수 없는 속성에 대한 동적 Getter 및 Setter를 구현할 수 있습니까?

2024-11-08에 게시됨
검색:718

 Can JavaScript Implement Dynamic Getters and Setters for Unpredictable Properties?

JavaScript에서 동적 Getters/Setters를 구현할 수 있나요?

동적 getter 및 setter를 사용하면 JavaScript 객체가 미리 정의된 속성 이상의 속성 액세스 및 수정을 처리할 수 있습니다. 이전 JavaScript 기술에서는 알려진 속성에 대해 특정 getter 및 setter를 사용했지만 이 문서에서는 정의되지 않은 속성에 대해 포괄적인 getter 및 setter 구현 가능성을 살펴봅니다.

ES2015 프록시: 동적 솔루션

ES2015에서는 다른 객체의 중개자 역할을 하는 객체 생성을 가능하게 하는 JavaScript 프록시를 도입했습니다. 이 기능은 동적 getter 및 setter를 엽니다.

const original = {
    example: "value",
};
const proxy = new Proxy(original, {
    get(target, name, receiver) {
        if (Reflect.has(target, name)) {
            let rv = Reflect.get(target, name, receiver);
            if (typeof rv === "string") {
                rv = rv.toUpperCase();
            }
            return rv;
        }
        return "missing";
    },
});

console.log(`proxy.example = ${proxy.example}`); // "proxy.example = VALUE"
console.log(`proxy.unknown = ${proxy.unknown}`); // "proxy.unknown = missing"

이 예에서 프록시 객체는 원본 객체에 대한 속성 액세스를 가로챕니다. 문자열 속성에 액세스할 때 프록시는 이를 대문자로 변환하여 반환합니다. 알 수 없는 속성의 경우 정의되지 않은 대신 "누락"을 반환합니다.

이 구현은 브라우저가 ES2015(ES6)를 지원하는 경우 브라우저 간 호환됩니다. 이전 브라우저의 경우 폴리필이나 대체 기술을 사용하는 것이 좋습니다. 프록시는 동적 getter 및 setter를 위한 유연한 솔루션을 제공하여 원본 객체를 수정하지 않고도 효율적인 속성 처리 및 속성 검사를 가능하게 합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3