Reflect.getOwnPropertyDescriptor()

Reflect.getOwnPropertyDescriptor() 静态方法与 Object.getOwnPropertyDescriptor() 类似。如果对象上存在给定属性,则返回该属性的属性描述符,否则返回 undefined

¥The Reflect.getOwnPropertyDescriptor() static method is like Object.getOwnPropertyDescriptor(). It returns a property descriptor of the given property if it exists on the object, undefined otherwise.

Try it

语法

¥Syntax

js
Reflect.getOwnPropertyDescriptor(target, propertyKey)

参数

¥Parameters

target

要在其中查找属性的目标对象。

propertyKey

要为其获取自己的属性描述符的属性的名称。

返回值

¥Return value

如果该属性作为 target 的自有属性存在,则为属性描述符对象;否则,undefined

¥A property descriptor object if the property exists as an own property of target; otherwise, undefined.

例外情况

¥Exceptions

TypeError

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

描述

¥Description

Reflect.getOwnPropertyDescriptor() 提供检索对象属性描述符的反射语义。与 Object.getOwnPropertyDescriptor() 的唯一区别是非对象目标的处理方式。如果目标不是对象,则 Reflect.getOwnPropertyDescriptor() 抛出 TypeError,而 Object.getOwnPropertyDescriptor() 将其强制为对象。

¥Reflect.getOwnPropertyDescriptor() provides the reflective semantic of retrieving the property descriptor of an object. The only difference with Object.getOwnPropertyDescriptor() is how non-object targets are handled. Reflect.getOwnPropertyDescriptor() throws a TypeError if the target is not an object, while Object.getOwnPropertyDescriptor() coerces it to an object.

Reflect.getOwnPropertyDescriptor() 调用 target[[GetOwnProperty]] 对象内部方法

¥Reflect.getOwnPropertyDescriptor() invokes the [[GetOwnProperty]] object internal method of target.

示例

¥Examples

使用 Reflect.getOwnPropertyDescriptor()

¥Using Reflect.getOwnPropertyDescriptor()

js
Reflect.getOwnPropertyDescriptor({ x: "hello" }, "x");
// {value: "hello", writable: true, enumerable: true, configurable: true}

Reflect.getOwnPropertyDescriptor({ x: "hello" }, "y");
// undefined

Reflect.getOwnPropertyDescriptor([], "length");
// {value: 0, writable: true, enumerable: false, configurable: false}

与 Object.getOwnPropertyDescriptor() 的区别

¥Difference with Object.getOwnPropertyDescriptor()

如果此方法的 target 参数不是对象(基元),那么它将导致 TypeError。对于 Object.getOwnPropertyDescriptor,非对象第一个参数将首先被强制为对象。

¥If the target argument to this method is not an object (a primitive), then it will cause a TypeError. With Object.getOwnPropertyDescriptor, a non-object first argument will be coerced to an object at first.

js
Reflect.getOwnPropertyDescriptor("foo", 0);
// TypeError: "foo" is not non-null object

Object.getOwnPropertyDescriptor("foo", 0);
// { value: "f", writable: false, enumerable: true, configurable: false }

规范

Specification
ECMAScript Language Specification
# sec-reflect.getownpropertydescriptor

¥Specifications

浏览器兼容性

BCD tables only load in the browser

¥Browser compatibility

也可以看看