ES6プロキシ:JavaScriptのメタプログラムPowerhouse
重要な概念:
ES6プロキシを有効にして、オブジェクトプロパティアクセスをインターセプトすることによりメタプログラミングを可能にします。 プロキシは、コードとターゲットオブジェクトの間の仲介者として機能します。 これには、3つの重要な要素が含まれます
プロパティアクセスをインターセプトするプロキシを作成しましょう:
このプロキシは、プロパティが存在する場合、元の値を返します。それ以外の場合は、42を返します 高度な例:制御されたプロパティ設定const target = { a: 1, b: 2, c: 3 }; const handler = { get: (target, prop) => (prop in target ? target[prop] : 42), // Default to 42 if property doesn't exist }; const proxy = new Proxy(target, handler); console.log(proxy.a); // 1 console.log(proxy.b); // 2 console.log(proxy.d); // 42
プロキシを強化して、プロパティの割り当てを制限することができます:
この例では、シングルキャラクタープロパティ(A-Z)のみを設定できます。
利用可能なプロキシトラップ:
const handler = { get: (target, prop) => (prop in target ? target[prop] : 42), set: (target, prop, value) => { if (prop.length === 1 && prop >= 'a' && prop <= 'z') { target[prop] = value; return true; } else { throw new Error(`Invalid property: ${prop}`); } }, }; const proxy = new Proxy({}, handler); // Start with an empty object proxy.a = 10; // Allowed proxy.b = 20; // Allowed try { proxy.AB = 30; // Throws an error } catch (e) { console.error(e); }
を超えて、多数のトラップがきめの細かいコントロールを提供します:
:get
オペレーターの呼び出しをインターセプトします。set
construct
new
:プロパティの削除を傍受します。apply
:deleteProperty
has
など...(完全なリストについては、MDNドキュメントを参照)in
ownKeys
実用的なアプリケーション:プロファイリング:プロパティアクセス周波数を追跡します。
よくある質問(FAQ):
提供されたFAQはすでに包括的で十分に構造化されています。 それ以上の追加は必要ありません。以上がES6アクション:プロキシの使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。