UNB/ CS/ David Bremner/ teaching/ cs2613/ books/ mdn/ Reference/ Global Objects/ Reflect/ Reflect.setPrototypeOf()

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

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

Specifications

Browser compatibility

See also