ホームページ > ウェブフロントエンド > jsチュートリアル > ES6アクション:プロキシの使用方法

ES6アクション:プロキシの使用方法

Christopher Nolan
リリース: 2025-02-15 10:37:09
オリジナル
401 人が閲覧しました

ES6プロキシ:JavaScriptのメタプログラムPowerhouse

ES6 in Action: How to Use Proxies

重要な概念:

ES6プロキシを有効にして、オブジェクトプロパティアクセスをインターセプトすることによりメタプログラミングを可能にします。 プロキシは、コードとターゲットオブジェクトの間の仲介者として機能します。 これには、3つの重要な要素が含まれます

  • ターゲット:プロキシが管理する元のオブジェクト。これは、配列やその他のプロキシなど、あらゆるJavaScriptオブジェクトである可能性があります。
  • ハンドラー:
  • トラップを使用してプロキシの動作を定義するオブジェクト trap:
  • は、プロキシが特定の操作にどのように応答するかを制御するハンドラー内の機能(例:取得、設定、プロパティの削除)。
  • 実例:

プロパティアクセスをインターセプトするプロキシを作成しましょう:

このプロキシは、プロパティが存在する場合、元の値を返します。それ以外の場合は、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

    :関数呼び出しをインターセプトします。
  • constructnew:プロパティの削除を傍受します。
  • apply
  • オペレーターのチェックをインターセプトします。
  • deleteProperty
  • :プロパティの列挙をインターセプトします。
  • hasなど...(完全なリストについては、MDNドキュメントを参照)in
  • ownKeys実用的なアプリケーション:

プロファイリング:プロパティアクセス周波数を追跡します。

    データバインディング:
  • UIの更新でオブジェクトの変更を同期します。
  • 検証:
  • データ型または制約を施行します。
  • ネガティブ配列インデックス:
  • 端からの配列要素にアクセスします。
  • ブラウザの互換性と制限:
  • 最新のブラウザーとnode.jsで広くサポートされていますが、ES6プロキシには完全なクロスブラウザー互換性(特に古いブラウザー)がありません。 重要なことに、それらは基本的な性質のためにポリフィルすることはできません。

よくある質問(FAQ):

提供されたFAQはすでに包括的で十分に構造化されています。 それ以上の追加は必要ありません。

以上がES6アクション:プロキシの使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート