Reflect.getPrototypeOf()

Reflect.getPrototypeOf() 静态方法与 Object.getPrototypeOf() 类似。它返回指定对象的原型。

¥The Reflect.getPrototypeOf() static method is like Object.getPrototypeOf(). It returns the prototype of the specified object.

Try it

语法

¥Syntax

js
Reflect.getPrototypeOf(target)

参数

¥Parameters

target

要获取其原型的目标对象。

返回值

¥Return value

给定对象的原型,可能是一个对象或 null

¥The prototype of the given object, which may be an object or null.

例外情况

¥Exceptions

TypeError

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

描述

¥Description

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

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

Reflect.getPrototypeOf() 调用 target[[GetPrototypeOf]] 对象内部方法

¥Reflect.getPrototypeOf() invokes the [[GetPrototypeOf]] object internal method of target.

示例

¥Examples

使用 Reflect.getPrototypeOf()

¥Using Reflect.getPrototypeOf()

js
Reflect.getPrototypeOf({}); // Object.prototype
Reflect.getPrototypeOf(Object.prototype); // null
Reflect.getPrototypeOf(Object.create(null)); // null

与 Object.getPrototypeOf() 的区别

¥Difference with Object.getPrototypeOf()

js
// Same result for Objects
Object.getPrototypeOf({}); // Object.prototype
Reflect.getPrototypeOf({}); // Object.prototype

// Both throw in ES5 for non-Objects
Object.getPrototypeOf("foo"); // Throws TypeError
Reflect.getPrototypeOf("foo"); // Throws TypeError

// In ES2015 only Reflect throws, Object coerces non-Objects
Object.getPrototypeOf("foo"); // String.prototype
Reflect.getPrototypeOf("foo"); // Throws TypeError

// To mimic the Object ES2015 behavior you need to coerce
Reflect.getPrototypeOf(Object("foo")); // String.prototype

规范

Specification
ECMAScript Language Specification
# sec-reflect.getprototypeof

¥Specifications

浏览器兼容性

BCD tables only load in the browser

¥Browser compatibility

也可以看看