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

【JavaScript ECMAScript】Object::Object.prototype.__proto__インスタンスアクセサプロパティの使い方

Object.prototype.__proto__インスタンスアクセサプロパティの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

Object.prototype.__proto__プロパティは、JavaScriptのオブジェクトが内部的に持つプロトタイプ(原型)チェーンにアクセスするために使用されるアクセサプロパティです。このプロパティを通じて、あるオブジェクトがその機能や特性を継承する「親」となるプロトタイプオブジェクトを取得したり、変更したりすることができます。

JavaScriptでは、オブジェクトは「プロトタイプチェーン」という仕組みを利用して、他のオブジェクトのプロパティやメソッドを継承します。例えば、あるオブジェクトが特定のメソッドを持っていなくても、そのプロトタイプ(親)がそのメソッドを持っていれば、その親から継承して利用することが可能です。__proto__プロパティは、この継承の元となるプロトタイプチェーンを直接的に操作する手段を提供します。

このプロパティは元々、非標準的な機能として広く使われていましたが、ウェブ互換性を考慮してECMAScript 2015 (ES6) で標準化されました。しかし、__proto__プロパティを直接使用してプロトタイプを設定することは、パフォーマンスへの影響や、コードの意図が読みにくくなる可能性があるため、一般的には推奨されていません。

現在では、オブジェクトのプロトタイプを取得する場合にはObject.getPrototypeOf()メソッドを、プロトタイプを設定する場合にはObject.setPrototypeOf()メソッドを使用することが推奨されています。また、新しいオブジェクトを作成する際にそのプロトタイプを最初から指定するには、Object.create()メソッドが最も推奨される方法です。これらの代替手段を用いることで、より安全で効率的なプロトタイプ操作が可能です。

公式リファレンス: Object.prototype.__proto__

構文(syntax)

1const myObject = {};
2const prototypeOfMyObject = myObject.__proto__;

引数(parameters)

引数なし

引数はありません

戻り値(return)

オブジェクトまたはnull

このプロパティは、オブジェクトのプロトタイプ(親オブジェクト)への参照を返します。プロトタイプチェーンをたどる際に利用され、プロトタイプが存在しない場合はnullを返します。

関連コンテンツ

関連プログラミング言語