Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【JavaScript ECMAScript】Reflect::Reflect.getPrototypeOf静的メソッドの使い方

Reflect.getPrototypeOf()静的メソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

Reflect.getPrototypeOf()メソッドは、指定されたオブジェクトのプロトタイプ(内部の[[Prototype]]プロパティ)を取得するメソッドです。JavaScriptのオブジェクトは、プロトタイプチェーンと呼ばれる仕組みを通じて、他のオブジェクトからプロパティやメソッドを継承します。このメソッドは、その継承元となるオブジェクト、すなわちプロトタイプをプログラム的に取得するために使用されます。

このメソッドは、第一引数にプロトタイプを取得したい対象のオブジェクトを一つだけ受け取ります。そして、そのオブジェクトのプロトタイプオブジェクトを返します。もし指定されたオブジェクトにプロトタイプが存在しない場合、例えばObject.prototype自身やnullをプロトタイプとして持つオブジェクトに対しては、nullを返します。

Reflect.getPrototypeOf()は、既存のObject.getPrototypeOf()と同様の機能を提供しますが、その振る舞いには重要な違いがあります。特に、Object.getPrototypeOf()がプリミティブ値を引数に取ると、対応するラッパーオブジェクトのプロトタイプを返すのに対し、Reflect.getPrototypeOf()は引数がオブジェクト型でない場合に即座にTypeErrorをスローします。この厳格なエラーハンドリングは、予期せぬ入力に対して早期に問題を検出し、より堅牢で予測可能なコードを書く上で非常に有効です。

Reflectオブジェクトは、JavaScriptにおける内部的なオブジェクト操作を統一的な関数インターフェースで提供することを目的としたAPI群の一部です。そのため、Reflect.getPrototypeOf()は、単にプロトタイプを取得するだけでなく、特にES6で導入されたProxyオブジェクトを扱う際など、より低レベルかつ厳密なオブジェクトのインタラクションが必要な場面でその真価を発揮します。オブジェクトの継承関係を動的に調査したり、カスタムプロキシハンドラー内でターゲットオブジェクトのプロトタイプを安全に参照したりする際に、このメソッドは不可欠なツールとなります。

公式リファレンス: Reflect.getPrototypeOf()

構文(syntax)

1Reflect.getPrototypeOf(targetObject);

引数(parameters)

target

  • target: object: プロトタイプを取得したい対象のオブジェクト

戻り値(return)

オブジェクトまたはnull

指定されたオブジェクトのプロトタイプオブジェクトを返します。プロトタイプが存在しない場合は null を返します。

関連コンテンツ