プロキシエージェント
プロキシは、言語レベルでの変更を行うことと同等、いくつかの操作のデフォルトの動作を変更するために使用、それはプログラミングのためのプログラミング言語である「メタプログラミング」(メタプログラミング)の一種です。
プロキシオブジェクトに対象物の外側へのアクセスの前に「ブロッキング」の層を設定する、と理解することができ、この層は第一従ってフィルタおよび外界への書き換えアクセスするためのメカニズムを提供する、インターセプトを通過しなければなりません。
VAR OBJ =新しいプロキシ({}、{ GET:機能(ターゲット、propKey、受信機){ !はconsole.log( `取得$ {} propKey`); リターンReflect.get(ターゲット、propKey、受信機); }、 セット:関数(ターゲット、propKey、値、受信機){ にconsole.log(! `} $ {propKey設定`); 戻りReflect.set(ターゲット、propKey、値、レシーバ); } })。
再定義属性(読み取りget
)とセット(set
)アクション。プロキシ実際の過負荷(過負荷)、つまり元の定義をオーバーライド定義言語のドット演算子、。
VARプロキシ=新しいプロキシ(ターゲット、ハンドラ);
ターゲットオーディエンスを迎撃するために、ハンドラのパラメータは、傍受の動作をカスタマイズするために使用され、オブジェクトです。あなたがいる場合handler
任意の傍受を設定していない、それは元のオブジェクトに直接アクセスすることと同じです。
するためにProxy
仕事を、あなたがしなければならないProxy
操作インスタンス、代わりに操作対象オブジェクトの。
1つのトリックは、設定、プロキシオブジェクトにあるobject.proxy
ことができるプロパティ、object
オブジェクトで呼び出されます。
VARオブジェクト= {プロキシ:新しいプロキシ(ターゲット、ハンドラ)}。
プロキシ・インスタンスが他のオブジェクトにプロトタイプとして使用することができます。
VARプロキシ=新しいプロキシ({}、{ 得る:機能(ターゲット、propKey){ リターン35; } })。 OBJ = Object.create(プロキシ)をしましょう。 obj.time // 35
詳細参照:http://es6.ruanyifeng.com/#docs/proxy