MDN wants to learn about developers like you:

The static Reflect.setPrototypeOf() method is the same method as Object.setPrototypeOf(). It sets the prototype (i.e., the internal [[Prototype]] property) of a specified object to another object or to null.


Reflect.setPrototypeOf(target, prototype)


The target object of which to set the prototype.
The object's new prototype (an object or null).

Return value

A Boolean indicating whether or not the prototype was successfully set.


A TypeError, if target is not an Object or if prototype is neither an object nor null.


The Reflect.setPrototypeOf method changes the prototype (i.e. the value of the internal [[Prototype]] property) of the specified object.


Using Reflect.setPrototypeOf()

Reflect.setPrototypeOf({}, Object.prototype); // true

// It can change an object's [[Prototype]] 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.
var target = {};
var proto = Object.create(target);
Reflect.setPrototypeOf(target, proto); // false


Specification Status Comment
ECMAScript 2015 (6th Edition, ECMA-262)
The definition of 'Reflect.setPrototypeOf' in that specification.
Standard Initial definition.
ECMAScript Latest Draft (ECMA-262)
The definition of 'Reflect.setPrototypeOf' in that specification.

Browser compatibility

FeatureChromeEdgeFirefoxInternet ExplorerOperaSafari
Basic support491242 No3610
FeatureAndroid webviewChrome for AndroidEdge mobileFirefox for AndroidOpera AndroidiOS SafariSamsung Internet
Basic support4949 Yes423610 ?

See also

Document Tags and Contributors

 Last updated by: wbamberg,