__proto__
__proto__ は Object のアクセサープロパティ (ゲッター関数およびセッター関数) で、アクセスされるオブジェクトの内部の [[Prototype]] (オブジェクトまたは null のどちらか)を暴露します。
オブジェクトリテラル定義内で __proto__ プロパティを使用することで、オブジェクトの作成時にオブジェクト [[Prototype]] を設定することができ、 Object.create() の代わりになります。オブジェクト初期化子 / リテラルの構文を参照してください。この構文は標準であり、実装に最適化されており、 Object.prototype.__proto__ とは全く異なります。
対応ブラウザ
| 機能 | デスクトップ | モバイル | ||||
|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Safari | Chrome Android | Safari iOS | |
Object.proto 非推奨 | 1 | 12 | 1 | 3 | 18 | 1 |
ライブデモ
Inspect an object's prototype
Compare __proto__ with Object.getPrototypeOf on a plain object.
JavaScript
出力
「実行」ボタンを押してください
Create a simple inheritance chain
Link one object to another prototype and read inherited properties.
JavaScript
出力
「実行」ボタンを押してください
Use a null-prototype dictionary
Create a dictionary object without inherited Object.prototype members.
JavaScript
出力
「実行」ボタンを押してください
実務での使いどころ
-
__proto__ の活用
__proto__ は Object のアクセサープロパティ (ゲッター関数およびセッター関数) で、アクセスされるオブジェクトの内部の [[Prototype]] (オブジェクトまたは null のどちらか)を暴露します。
注意点
- 一部のブラウザでのみ対応。使用前にブラウザサポートを確認すること。
アクセシビリティ
- JavaScript による動的更新時は、aria-live リージョンで変更をスクリーンリーダーに通知する。