ES6の「プロキシ」ハンドラーにパラメーターを渡すことは可能ですか?
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
内部Aを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];
}
}