普段rubyを書いていて、メタプログラミングrubyとか読んで勉強しているのだけど、javascriptもやらなきゃなと思っていろいろ勉強を始めている。
いまいちプロトタイプベースというのが理解できなくて、うじゃうじゃnodeのコンソールでいじっていたのだけど、だんだんわかってきたので図に書いてみた。
・すべてはオブジェクトである
・ただ、クラスみたいな概念は存在する。
クラスみたいな概念といっているのは、rubyでいうオブジェクトのメソッド探索はオブジェクト自身→そのクラスのメソッド→その親クラスのメソッド(厳密には違いますが、そこはメタプログラミングrubyを参考)のように探索していくのだけど、javascriptの場合はプロトタイプチェーンという方式で、__proto__
をさかのぼって探索がされていくというところ。かなと。
だから、クラスっぽく見えるのだけど、すべてはオブジェクトです。