目次
ダブルアンダースコア・プロト(__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のオブジェクトが「どのプロトタイプ(親)」をもっているかを取得するための標準メソッドです。
関連の記事