javascript WEB WEBフロントエンド開発

ES6のクラス定義について

投稿日:2017年12月6日 更新日:

 

概要

  • JavaScript はプロトタイプベースの言語であり、クラスベースの言語とは異なりクラスというものが存在しませんでした。
  • プロトタイプを使ってクラスと同等なことを実現するということがJavaScriptでも行われていました。
  • ECMAScript 6(ES6)でJavaScriptにも「クラス」の文法が追加されました。
  • Javascriptにはクラスという概念はないため、クラスベースの言語のクラスとは異なり、あくまでも、今までのプロトタイプを使った記述をClassで定義できるようになっただけ。
  • クラス定義の中ではメソッドしか定義出来ない。

 

クラスとコンストラクタの定義

  • ES6ではclassキーワードを使ってクラスを定義
  • classのブロックの中でconstructorという名前の関数を定義するとそれがコンストラクタとして利用されます。

 

メンバ変数 (インスタンス変数)

  • クラスの内部でメンバ変数を定義・参照するにはthis.<プロパティ名>を使います。プロパティの概念はないが、this.変数で定義される変数はpublicなプロパティ名として見える。
  • JavaScriptではJavaやC++のようにthisを省略することは出来ない。
  • javascriptには、privateやprotectedのようなアクセス修飾子が存在しない。

 

メソッド定義と呼び出し

  • classブロックの中にconstructor以外の名前の関数を定義するとメソッドになります。
  • メソッド内から他のメソッドの呼び出しを行う場合はthis.<メソッド名>(引数)を使います。メソッド呼び出しの際にthis を省略することは出来ない。
  • javascriptには、privateやprotectedのようなアクセス修飾子が存在しない。ただし名前規約で private なものを名前でわかりやすくして間違えてアクセスしないようにすることはできます。 Google の JavaScript のスタイルガイド では private なメソッド, メンバ変数は名前の末尾に _ をつけることが求められています。
  • プロパティの考えはなく、定義できるのはメソッドのみ。

 

継承

  • ES6 JavaScriptでクラスを継承するにはextendsを使います。
  • 親クラスのコンストラクタを呼び出すにはsuper(...)を使います。
  • 子クラスで親クラスと同名のメソッドを定義すればメソッドがオーバーライドされます。
  • 子クラスから親クラスのメソッドを呼び出すにはsuper.methodName(...)のようにします。
  • コンストラクタの上書き時はsuperを入れる

 

静的メソッド(クラスメソッド)

class構文は、静的メソッドの定義方法も用意しています。

クラスのインスタンスを作らずとも呼べるメソッドのこと。

 

 

参考にさせて頂いたページです。

ES6 におけるJavaScriptのクラス定義

ES2015新機能: JavaScriptのclassとmethod

javascriptでprivate変数とメソッドを定義する方法

 

 

 

スポンサーリンク

スポンサーリンク

-javascript, WEB, WEBフロントエンド開発

執筆者:

関連記事

Javascriptのアロー関数について

  アロー関数 ES2015(ES6)の新構文の一つ 無名関数の省略記法。 無名関数とアロー関数とは完全に等価というわけではないため、取り扱いにはいくつかの注意が必要。 =>(矢)を使 ...

npmについて

コマンドについて ・コマンド コマンド 説明 npm init 対話形式で項目を入力してpackage.jsonを作成します。 npm init -y デフォルト値でpackage.jsonを作成しま ...

JavascriptのEventオブジェクトについて

1.function(e) {} の引数eの意味合い 引数eはイベントオブジェクトです。イベントハンドラ、イベントリスナとして設定したコールバック関数が受け取ることができる。 JavaScriptの関 ...

Reactに関するメモ

    1.ReactでComponentのRenderが行われるタイミング ReactでComponentのRenderが行われるのは以下2つのタイミングのみ stateを更新す ...

Webpackを使ったWEBフロントエンド開発

Webpackとはビルドツールの1つであり、モジュール管理ツールとしての側面も持っています。フロントエンドのビルドツールとしては、他にGulpとGruntなどがありますが、それらの仲間といった感じだと ...