매개 변수를 ES6`Proxy '핸들러에 전달할 수 있습니까?
Nov 24 2020
사용자 지정 설정으로 기본 설정을 재정의하고 Proxy개체가 이상적인 솔루션처럼 보였습니다.
settingsHandler = {
get(target, property) {
return this.getSettings(property) || target[property];
}
}
this.settings = new Proxy(baseSettings, settingsHandler);
그러나 this
핸들러 내부 의 컨텍스트는 target
객체 일 뿐이며 this.getSettings(property)
사용할 수 없기 때문에 실패합니다.
Proxy
이것에 대한 의미가 아닌 것처럼 보이지만 명확하게 언급 된 것을 찾을 수 없습니다. 대신 수업을 만들어야할까요?
답변
edzillion Nov 25 2020 at 12:32
내부 를 래핑 하고 객체를 해당 클래스의 속성으로 지정 하여 원하는 기능을 얻는 데 도움 이 되는 이 요점 을 찾았 습니다 .Proxy
Class
settings
export default class ProxySettings extends Object {
token: Token;
settings: TokenSettings;
constructor(token, settings) {
super(...arguments);
this.token = token;
this.settings = settings;
return new Proxy(this, this.handler);
}
get handler() {
return {
get(target, property) {
return target.token.getSettings(property) || target.settings[property];
}
};
}
}
다음과 같이 인스턴스화됩니다. this.settings = new ProxySettings(this.token, baseTokenSettings);
잘 작동하지만 약간 지저분하고 이전에이 패턴을 본 적이 없으므로 이것이 최선의 방법인지 확신 할 수 없습니다. 모든 의견을 부탁드립니다.
edzillion Nov 25 2020 at 13:52
유용한 조언을 고려할 때 내 요구에 맞는 가장 간단한 솔루션은 화살표 함수 구문을 사용하는 것입니다.
const settingsHandler = {
get: (target, property) => {
return this.getSettings(property) || target[property];
}
}