JS: Reflect.setPrototypeOf

By Xah Lee. Date: . Last updated: .

(new in ECMAScript 2015)

Reflect.setPrototypeOf

Reflect.setPrototypeOf(obj, parent)

Sets the parent of obj to parent. return true if success.

  • If obj is not an object throw TypeError.
  • If parent is not an object nor null throw TypeError.
const aa = {};
const bb = Object.create(aa);

// bb's parent is aa
console.assert(Reflect.getPrototypeOf(bb) === aa);

// now change parent
let cc = Reflect.setPrototypeOf(bb, Array);

// return value is true
console.assert(cc);

// verify parent
console.assert(Reflect.getPrototypeOf(bb) === Array);

Reflect.setPrototypeOf vs Object.setPrototypeOf

Reflect.setPrototypeOf is a better version of Object.setPrototypeOf.

The reflect version throws error if argument is not an object.