The Reflect.setPrototypeOf()
static method is like Object.setPrototypeOf but returns a Boolean. It sets the prototype (i.e., the internal <span class="createlink">Prototype</span>
property) of a specified object.
Syntax
Reflect.setPrototypeOf(target, prototype)
Parameters
target
- : The target object of which to set the prototype.
prototype
- : The object's new prototype (an object or
null
).
- : The object's new prototype (an object or
Return value
A Boolean indicating whether or not the prototype was successfully set.
Exceptions
Description
Reflect.setPrototypeOf()
provides the reflective semantic of setting the prototype of an object. At the very low level, setting the prototype returns a boolean (as is the case with the proxy handler). Object.setPrototypeOf provides nearly the same semantic, but it throws a TypeError if the status is false
(the operation was unsuccessful), while Reflect.setPrototypeOf()
directly returns the status.
Reflect.setPrototypeOf()
invokes the <span class="selflink">SetPrototypeOf</span>
object internal method of target
.
Examples
Using Reflect.setPrototypeOf()
Reflect.setPrototypeOf({}, Object.prototype); // true
// It can change an object's <span class="createlink">Prototype</span> to null.
Reflect.setPrototypeOf({}, null); // true
// Returns false if target is not extensible.
Reflect.setPrototypeOf(Object.freeze({}), null); // false
// Returns false if it cause a prototype chain cycle.
const target = {};
const proto = Object.create(target);
Reflect.setPrototypeOf(target, proto); // false