Reflect.setPrototypeOf()

静的な Reflect.setPrototypeOf() メソッドは、返値を除いて、 Object.setPrototypeOf() と同じメソッドです。これは指定されたオブジェクトのプロトタイプ (つまり、内部の [[Prototype]] プロパティ) にほかのオブジェクト、または null を設定し、操作が成功したなら true を、そうでないなら false を返します。

構文

Reflect.setPrototypeOf(target, prototype)

引数

target
プロトタイプを設定する対象のオブジェクトです。
prototype
オブジェクトの新しいプロトタイプ (オブジェクトまたは null) です。

返値

プロトタイプが正常に設定されたかどうかを示す Boolean 値です。

例外

TypeError: targetObject ではない場合、または prototype がオブジェクトでも null でもない場合。

解説

Reflect.setPrototypeOf メソッドは、指定されたオブジェクトのプロトタイプ (つまり、内部の [[Prototype]] プロパティ) を変更します。

Reflect.setPrototypeOf() の使用

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

// オブジェクトの [[Prototype]] は null に変更できる。
Reflect.setPrototypeOf({}, null)  // true

// 対象が拡張できない場合、false を返す。
Reflect.setPrototypeOf(Object.freeze({}), null)  // false

// プロトタイプチェーンが循環する場合、false を返す。
let target = {}
let proto = Object.create(target)
Reflect.setPrototypeOf(target, proto)  // false

仕様書

仕様書
ECMAScript (ECMA-262)
Reflect.setPrototypeOf の定義

ブラウザーの互換性

BCD tables only load in the browser

関連情報