Reflect.getPrototypeOf() - JavaScript | MDN
Try it
const object = {
foo: 42,
};
const proto = Reflect.getPrototypeOf(object);
console.log(proto);
// Expected output: Object { }
console.log(Reflect.getPrototypeOf(proto));
// Expected output: null
Syntax
js
Reflect.getPrototypeOf(target)
Parameters
target-
The target object of which to get the prototype.
Return value
The prototype of the given object, which may be an object or null.
Exceptions
TypeError-
Thrown if
targetis not an object.
Description
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() invokes the [[GetPrototypeOf]] object internal method of target.
Examples
Using Reflect.getPrototypeOf()
js
Reflect.getPrototypeOf({}); // Object.prototype
Reflect.getPrototypeOf(Object.prototype); // null
Reflect.getPrototypeOf(Object.create(null)); // null
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
Specifications
| Specification |
|---|
| ECMAScript® 2027 Language Specification # sec-reflect.getprototypeof |