Javascript ダブルアンダースコア・プロト(__proto__)とは

目次

ダブルアンダースコア・プロト(__proto__)とは

オブジェクトが参照している親オブジェクト(プロトタイプ)へのリンクです。

<script>
const parent = { color: "red" };
const child = Object.create(parent);

console.log(child.color);       // "red" (親から継承)
console.log(child.__proto__);   // { color: "red" } ← parentそのもの
</script>

3行目は、childはparentを継承しています。

5行目は、親の値を表示しています。

6行目は、parentそのものを表示しています。child.__proto__は「親プロトタイプへのリンク(参照)」です。

プロトタイプチェーンです。

以下は、上記コードの構造です。

child.__proto__ → parent.__proto__ → Object.prototype → null

 

Object.getPrototypeOf()とは

__proto__は古い書き方です。

代替として、Object.getPrototypeOf()の使用が推奨されています。

<script>
const parent = { color: "red" };
const child = Object.create(parent);

console.log(child.color);       // "red" (親から継承)
console.log(Object.getPrototypeOf(child));   // { color: "red" } ← parentそのもの
</script>

Object.getPrototypeOf()は、JavaScriptのオブジェクトが「どのプロトタイプ(親)」をもっているかを取得するための標準メソッドです。

関連の記事

JavaScript プロトタイプチェーンとは(継承)

△上に戻る