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

執筆者:

関連記事

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

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

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

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

Cordovaのメモ書き

  devicereadyイベント   Cordovaのアプリが実行される時、Cordovaが提供しているネイティブ機能をHTML5側からすぐに呼び出せることが出来ない。 Cordovaフレ ...

SEO対策のまとめ

SEO対策は良く言われるように、(1)クローラーの巡回フェーズ、(2)ページのインデックス登録フェーズ、(3)検索順位決定フェーズの3つのフェーズで考える必要があるようです。SEO対策は様々なWEBペ ...

Node.jsのrequire関数のモジュール読み込みについて

Node.js のモジュール機構について(JavaScript の場合) ディレクトリ構造 Node.js のパッケージマネージャーである npm を使う場合、プロジェクト ディレクトリは以下のような ...