カワハラの、雑多な記録。

【JavaScript ES6学習】クラスのStatic Methods

      2019/06/17

【JavaScript ES6学習】基礎文法編 目次

codecademyで学習したことをまとめています。
プログラミング初心者の私が学習しながら書いた、完全に自分用のメモみたいなものなので、他人が見ると意味不明だったり、間違いがある可能性があるのでご注意ください。

codecademyは無料でかなりのことが学習できる素晴らしいサイトですが、英語です。
なのでこの記事に書かれている日本語の用語も間違っているかもしれません。

今回学習した項目

codecademy
JavaScript
Lesson 9 Static Methods

インスタンスからは呼べないStatic Methods

メソッドを入れるためにクラスを定義したいが、クラスのインスタンスからはそのメソッドを呼べないようにしたい。
そんなときはStatic Methodsを使えばいいとのこと。
いまいちどういう状況で必要になるのかイメージ出来ませんが。

コード例です。

class Animal {
  constructor(name) {
    this._name = name;
    this._behavior = 0;
  }

  static generateName() {
    const names = ['Angel', 'Spike', 'Buffy', 'Willow', 'Tara'];
    const randomNumber = Math.floor(Math.random()*5);
    return names[randomNumber];
  }
} 

コンストラクターの下にstaticキーワードを付けて“generateName()”メソッドを定義しています。

次のようにインスタンスを作成せずに“generateName()”を実行すると、きちんと動きます。

console.log(Animal.generateName()); // returns a name

でも、このクラスのインスタンスを作成し、インスタンスの“generateName()”を実行するとエラーがでて実行できません。

const tyson = new Animal('Tyson'); 
tyson.generateName(); // TypeError

【JavaScript ES6学習】基礎文法編 目次

 - プログラミング - JavaScript