Reflect.get()

Reflect.get() 静态方法类似于属性访问器语法,但它是一个函数。

试一试

语法

js
Reflect.get(target, propertyKey)
Reflect.get(target, propertyKey, receiver)

参数

target

获取属性的目标对象。

propertyKey

要获取的属性的名称。

receiver 可选

如果遇到 getter,则为对 target 的调用提供的 this 的值。

返回值

属性的值。

异常

TypeError

如果 target 不是对象,则抛出此异常。

描述

Reflect.get() 提供了属性访问的反射语义。也就是说,Reflect.get(target, propertyKey, receiver) 在语义上等效于

js
target[propertyKey];

请注意,在正常的属性访问中,targetreceiver 在可观察上将是相同的对象。

Reflect.get() 调用 target[[Get]] 对象内部方法

示例

使用 Reflect.get()

js
// Object
const obj1 = { x: 1, y: 2 };
Reflect.get(obj1, "x"); // 1

// Array
Reflect.get(["zero", "one"], 1); // "one"

// Proxy with a get handler
const obj2 = new Proxy(
  { p: 1 },
  {
    get(t, k, r) {
      return k + "bar";
    },
  },
);
Reflect.get(obj2, "foo"); // "foobar"

// Proxy with get handler and receiver
const obj3 = new Proxy(
  { p: 1, foo: 2 },
  {
    get(t, prop, receiver) {
      return receiver[prop] + "bar";
    },
  },
);
Reflect.get(obj3, "foo", { foo: 3 }); // "3bar"

规范

规范
ECMAScript 语言规范
# sec-reflect.get

浏览器兼容性

BCD 表格仅在启用 JavaScript 的浏览器中加载。

另请参阅