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 の定義

ブラウザーの互換性

Update compatibility data on GitHub
デスクトップモバイルサーバー
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeAndroid 版 FirefoxAndroid 版 OperaiOSのSafariSamsung InternetNode.js
setPrototypeOfChrome 完全対応 49Edge 完全対応 12Firefox 完全対応 42IE 未対応 なしOpera 完全対応 36Safari 完全対応 10WebView Android 完全対応 49Chrome Android 完全対応 49Firefox Android 完全対応 42Opera Android 完全対応 36Safari iOS 完全対応 10Samsung Internet Android 完全対応 5.0nodejs 完全対応 6.0.0

凡例

完全対応  
完全対応
未対応  
未対応

関連情報