기존 JavaScript에서 getter 및 setter는 특정 속성 이름에 대해 정의됩니다. 그러나 ES2015에 도입된 프록시를 사용하여 보다 유연한 동적 getter 및 setter를 생성할 수 있습니다.
동적 getter 및 setter를 사용하면 명시적인 정의 없이 속성 액세스 및 수정이 가능합니다. 프록시를 사용하여 이를 구현하는 방법은 다음과 같습니다.
"use strict";
if (typeof Proxy == "undefined") {
throw new Error("This browser doesn't support Proxy");
}
let original = {
example: "value",
};
let proxy = new Proxy(original, {
get(target, name, receiver) {
if (Reflect.has(target, name)) {
let rv = Reflect.get(target, name, receiver);
// Modify the value here before returning
return rv;
}
// Define default behavior for unknown properties
return "missing";
}
});
위의 프록시를 사용하면 속성 액세스 및 수정을 동적으로 수행할 수 있습니다.
console.log(`proxy.example = ${proxy.example}`); // "proxy.example = VALUE"
console.log(`proxy.unknown = ${proxy.unknown}`); // "proxy.unknown = missing"
프록시는 Chrome, Firefox, Safari와 같은 최신 브라우저에서 지원됩니다. 그러나 프록시를 지원하지 않는 이전 브라우저의 경우 프록시 없이 동적 getter/setter 구문을 사용하여 해결 방법을 구현할 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3