LoginSignup
0
0

More than 3 years have passed since last update.

JavaScriptの難所「Prototype」について解説してみた(学習まとめ)

Last updated at Posted at 2020-03-29

始めに(前書き)

どうもこんにちは、
今回はJavaScriptの難所であろう「Prototype」の概念について解説してみたいと思います。
この記事を読むにあたっては、ある程度オブジェクト指向について理解していないと難しいかと思いますので、読者様におかれましては、事前にオブジェクト指向について学習してから読まれることをオススメします。
また記事の内容に漏れや誤り等ありましたら、ご指摘いただけると助かります。
それでは、よろしくお願いいたします。

本題(本文)

JavaScriptは、(どうやら世間的には)一応はオブジェクト指向言語に分類されるそうですが、
この「Prototype」(以降「プロトタイプ」)の概念があるためにややこしいことになっています。
クラスとは、インスタンスの本になるもので、インスタンスが”実体”だとすると、その”設計図”にあたるものとなります。
たとえば、”自動車”がクラスなら、このクラスを本にして、”カローラ”だとか”フェラーリ”がつくられますが、どれもが自動車なので、同じクラスから継承させて実体をつくります。当然、”カローラ”や”フェラーリ”は、自動車としての(必要な)機能や性質を共通に持ちます。
ここで、プロトタイプとは、複数の任意のインスタンスの間で、(必ずしも)共通の機能や性質を見出せなくてもいいことになっています。
つまり、あるクラスを本にして、そのクラスから継承されているインスタンスであっても、
本になっている(=継承元となっている)クラスにはない機能や性質を持つことができるということです。
これは他の(一般に)オブジェクト指向言語に分類される言語のクラスに関する縛り・制約を緩めたような仕様となっています。
しかも、JavaScriptでは、実行時に動的にインスタンスの持つ機能や性質を変えられる(=メンバーを追加・削除・変更ができる)ようになっています。

終わりに(後書き)

この記事では、至極簡単にプロトタイプについて解説してみました。
実際に動くコードをつかって解説したほうがよかったかもしれませんが、
読者様にとって参考になる、あるいは納得していただけるものが書ける自信がなかったので、
とりあえず今回はコードはなしということで、この記事の執筆を終えたいと思います。
また暇があったら、この記事にコードを書き加えることになるかもしれません。
今回は以上です。
最後までお付き合いくださり、ありがとうございました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0