0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

new Proxy の get() の引数である receiver って何 ?

Posted at

new Proxy のトラップ (trap)にある get メソッドの引数の receiver は何が渡ってきているのかを調べました。

const target = {
  name: "k",
  get hello() {
    return this.name
  }
};

const handler = {
  get (target, key, receiver) {
    return Reflect.get(target, key, receiver)
  }
};

const proxyObj = new Proxy(target, handler);
console.log(proxyObj.name)

receiver
proxy、または proxy から継承するオブジェクトのどちらか
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Proxy/Proxy/get

MDN での receiver の説明にあるように、receiver で渡される値は、proxy、または proxy から継承するオブジェクトのどちらかです。

上記のコード例だと、proxyObj.name によって get() が呼ばれ、そのときに receiver に渡ってくる値は、proxyObjです。

proxyObj は、new Proxy(target, handler) によって、target を継承しているため、 proxy から継承するオブジェクト(= target) であると、私は解釈しました。

間違いがあればご指摘下さい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?