A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/get below:

handler.get() - JavaScript | MDN

handler.get()

Baseline Widely available

handler.get() は、オブジェクトの [[Get]] 内部メソッドに対するトラップです。プロパティアクセサーなどの操作で使用されます。

試してみましょう
const monster1 = {
  secret: "easily scared",
  eyeCount: 4,
};

const handler1 = {
  get: function (target, prop, receiver) {
    if (prop === "secret") {
      return `${target.secret.substring(0, 4)} ... shhhh!`;
    }
    return Reflect.get(...arguments);
  },
};

const proxy1 = new Proxy(monster1, handler1);

console.log(proxy1.eyeCount);
// Expected output: 4

console.log(proxy1.secret);
// Expected output: "easi ... shhhh!"
構文
new Proxy(target, {
  get(target, property, receiver) {
  }
})
引数

次の引数が get() メソッドに渡されます。 this はハンドラーにバインドされます。

target

ターゲットオブジェクトです。

property

プロパティの名称を表す文字列または Symbol です。

receiver

this 値はゲッター用です。 Reflect.get() を参照してください。これは通常、プロキシー自身か、プロキシーを継承するオブジェクトです。

返値

get() メソッドはどんな値でも返すことができます。

解説 介入

このトラップは下記の操作に介入できます。

他にも、[[Get]] 内部メソッドを呼び出すあらゆる操作に介入できます。

不変条件

プロキシーの内部メソッド [[Get]] は、ハンドラー定義が以下の不変条件のいずれかに違反している場合、 TypeError が発生します。

例 プロパティ値の取得のトラップ

次のコードではプロパティ値の取得をトラップします。

const p = new Proxy(
  {},
  {
    get(target, property, receiver) {
      console.log(`called: ${property}`);
      return 10;
    },
  },
);

console.log(p.a);
// "called: a"
// 10

次のコードでは不変条件に違反します。

const obj = {};
Object.defineProperty(obj, "a", {
  configurable: false,
  enumerable: false,
  value: 10,
  writable: false,
});

const p = new Proxy(obj, {
  get(target, property) {
    return 20;
  },
});

p.a; // TypeError is thrown
仕様書 ブラウザーの互換性 関連情報

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4