クラス class
JavaScriptでも他の言語と同じようにclassを定義できます。 ここでは、キーワードclassを使用した定義方法とprototypeベースの定義方法を説明します。
キーワードclassを使用したクラスの定義方法
classの後にクラスの名称を指定します。
コンストラクタはconstructorで引数を持つこともできます。
class Animal {
constructor(weight) {
this.weight = weight;
}
getWeight(){
return this.weight;
}
}
let animal = new Animal(10);
console.log(animal.getWeight()); // 10
継承はextendsのキーワードを使います。
class Dog extends Animal {
constructor(weight,name) {
super(weight);
this.name = name;
}
getName(){
return this.name;
}
}
let dog = new Dog(15,'Hachi');
console.log(dog.getWeight()); // 15
console.log(dog.getName()); // 'Hachi'
prototypeベースの昔のクラスの定義方法
キーワードclassを使わないクラスの定義は次のようになります。
let Animal = function (weight){
this.weight = weight;
};
Animal.prototype.getWeight = function() {return this.weight;};
let animal = new Animal(10);
console.log(animal.getWeight()); // 10
継承はsetPrototypeOfを使って次のようになります。
let Dog = function (weight,name){
Animal.call(this, weight);
this.name = name;
};
Object.setPrototypeOf(Dog.prototype, Animal.prototype);
Animal.prototype.getName = function() {return this.name;};
let dog = new Dog(15,'Hachi');
console.log(dog.getWeight()); // 15
console.log(dog.getName()); // 'Hachi