Reflect.setPrototypeOf()

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

構文

Reflect.setPrototypeOf(target, prototype)

引数

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

戻り値

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

例外

targetObject ではない場合、または prototype がオブジェクトでも null でもない場合に TypeError がスローされます。

説明

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

Reflect.setPrototypeOf() を使用する

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

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

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

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

仕様

仕様 状態 コメント
ECMAScript 2015 (6th Edition, ECMA-262)
Reflect.setPrototypeOf の定義
標準 初期定義です。
ECMAScript Latest Draft (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

凡例

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

関連情報