【JavaScript ES6学習】クラスのStatic Methods
2019/06/17
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