私はJavaScriptを使用している時に、理解せずにずっと放置していた。
__proto__と言う謎の物体。これを理解せずに放置している人は多いと思う。
今回はそれをこの記事をきっかけに理解を試みた。
__proto__とは一体なんなのか?
空のオブジェクトを作成したはずなのに、__proto__が出てくる。
Objects.prototypeだった
JavaScriptでは作成された全てのオブジェクトの__proto__に対して、
自動的にObjects.prototypeプロパティが付属している。
__proto__とObjects.prototypeが全く同じプロパティを持っていることがわかる。
これはxがObjects.prototypeから同じ__proto__を継承していると言うことである!
新しい機能を割り当てることも可能
Object.prototypeを変更することで、その後に作成される全てのオブジェクトにも変更が含まれる。
新しい関数を与えてみると。

このように新しい機能を割り当てると、その後のオブジェクトではその機能を持つことが可能となる。
オブジェクトだけじゃない__proto__
オブジェクトだけが__proto__を持っているわけではなく、他にも存在する!
- Array.prototype
- Number.prototype
- String.prototype
- Boolean.prototype
最後に
この__proto__の機能を使うことは非推奨なので、使う際には十分注意をしていただきたい。
