JavaScript のプロキシ

王林
リリース: 2024-07-19 19:15:37
オリジナル
370 人が閲覧しました

A Proxy in JavaScript

JavaScript のプロキシは、基本的な操作 (プロパティの検索、割り当て、列挙、関数の呼び出しなど) の動作をカスタマイズできる特別なオブジェクトです。別のオブジェクト。それは、オブジェクトとのやり取りを傍受して変更できるいたずらな仲介者がいるようなものです。

なぜプロキシが必要なのでしょうか?

プロキシはさまざまな理由で役立ちます:

  1. 検証: 割り当てを検証してデータの整合性を確保します。
    ロギング: デバッグまたは監視のためにオブジェクトに対する操作を追跡します。

  2. デフォルト値: プロパティにアクセスするときにデフォルト値を提供します。

  3. アクセス制御: 特定のプロパティへのアクセスを制限または変更します。

  4. 仮想プロパティ: オブジェクト上に物理的に存在しないプロパティを定義します。

プロキシを理解するための面白い例

例 1: 過保護な親

ティミーという名前の子供がいて、彼がクッキーを食べすぎないよう注意したいと想像してください。あなたは過保護な親として行動し、彼の Cookie 摂取量を監視および制御します。

let timmy = {
  cookies: 3
};

let overprotectiveParent = new Proxy(timmy, {
  get(target, property) {
    console.log(`Overprotective Parent: "Timmy currently has ${target[property]} ${property}."`);
    return target[property];
  },
  set(target, property, value) {
    if (property === 'cookies' && value > 5) {
      console.log('Overprotective Parent: "No, Timmy, you can’t have more than 5 cookies!"');
      return false;
    }
    console.log(`Overprotective Parent: "Alright, Timmy, you can have ${value} ${property}."`);
    target[property] = value;
    return true;
  }
});

// Checking Timmy's cookies
console.log(overprotectiveParent.cookies); // Overprotective Parent: "Timmy currently has 3 cookies."

// Trying to give Timmy too many cookies
overprotectiveParent.cookies = 6; // Overprotective Parent: "No, Timmy, you can’t have more than 5 cookies!"

// Setting a reasonable number of cookies
overprotectiveParent.cookies = 4; // Overprotective Parent: "Alright, Timmy, you can have 4 cookies."
console.log(overprotectiveParent.cookies); // Overprotective Parent: "Timmy currently has 4 cookies."
ログイン後にコピー

以上がJavaScript のプロキシの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!