目次

JavaScriptについて

web制作を始めてからというものJavaScriptはかなりクセのあるプログラミング言語だと感じています。

その理由の一つがJavaScriptはプロトタイプベースのオブジェクト指向言語だということ。jQueryでDOMを操作するだけとかなら全然問題ないけれど、少しだけ学ぶとほかの言語とは似て非なるものだなぁと思いました。

JavaScriptにクラスはあるのか?

ECMAScript(エクマスクリプト)とはJavaScriptの標準規格のことです。 ECMAScriptはバージョン1~続いており、現在はバージョン5~6が大体主流。 よく見るであろうES5やES6という表記は「ECMAScriptのバージョン5、バージョン6」って意味です。

ECMAScript 2015 で導入された JavaScript クラスは、JavaScript にすでにあるプロトタイプベース継承の糖衣構文です。クラス構文は、新しいオブジェクト指向継承モデルを JavaScript に導入しているわけではありません

とのことなので、厳密にはクラスはないものと思われます。

糖衣構文っていうのは書き方は違うけど、内部的には同じことをしてるよ、ってことです。

ES5までは、クラス構文がなかったのでその代わりにプロトタイプチェーンというJavaScript独自の仕組みを使ってオブジェクト指向を実現していました。(たぶん)

プロトタイプってなに?

JavaScriptにはクラスがないためクラスベースのオブジェクト指向言語のように、クラスからインスタンスをつくることはできません。なので、組み込みオブジェクトからインスタンスをつくります。

簡単にいうとプロトタイプとは、メソッドを定義するオブジェクトのことです。(厳密にはメソッドはなく関数です)

プロトタイプオブジェクトにメソッド定義しなかった場合、インスタンスを作るときにインスタンスごとにメソッドがコピーされてしまいます。コピーでなく参照をさせるためにプロトタイプオブジェクトに定義するのです。

またこのプロトタイプオブジェクトはJavaScriptでクラスの継承を行う際にも、ベースクラスのメソッドをスーパークラスで使う際に利用されます。

プロトタイプチェーンってなに?

簡単にいうとプロトタイプオブジェクトをさかのぼって参照する仕組みのことです。

Aを継承したBというクラスがあった場合、Bのなかに呼び出したメソッドが見つからない場合は、Aのプロトタイプオブジェクトの中からメソッドを探すということです。遡って最終的にはnullに到達して終了です。

まとめ

次回はプログラムのコードを例にしてブログを書こうとおもいます。