javascript 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, javascript, WEB, WEBフロントエンド開発

執筆者:

関連記事

TypeScriptのモジュールについて

モジュールについてまとめました。 (内部モジュール) 共通の関数などをグローバル空間に記載したくない場合などに使用する。   (外部モジュール) 別ファイルとして外部にある機能を利用する仕組 ...

lite-serverを使った開発サーバの構築

Lite-Serverのパッケージを使った開発サーバの構築方法を説明したいと思います。開発用のタスクはnpm-scriptsを使用します。 記載した実行環境は以下の通りです。Node.jsのインストー ...

Reactに関するメモ

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

SystemJSのConfig構成について

SystemJSのConfig構成はsystemjs.config.jsファイルで設定される事が多いと思います。今回はAngular2の公式チュートリアルにあるクイックスタートで使用されているsyst ...

JavaScriptの仕様

javascriptでes5とかes6とか聞きますけど、あれって何なのですか? ES5とES6の違いをまとめてみた(メモ) JavaScriptの仕様ES5以前とES2015(ES6)以降の違いの抑え ...