[JSデフォルト構文]クラスclass


クラス(オブジェクト向け言語)-templateclassは、オブジェクトを生成するためのテンプレートと見なすことができる.
属性(フィールド(データ)と動作(メソッド)が含まれます.
パラメータはコンストラクション関数(constructor:オブジェクトに初期値を入れて必要なデータを渡す)として受信されます.
クラスは、class A{}のような宣言で宣言してもよいし、変数にクラス式を割り当てることで使用してもよい.const B = class{} newジェネレータを使用してインスタンスを生成できます.
既存のコンストラクション関数を使用してオブジェクトを作成すると、この形式が表示されます.
function Person(name, age){
    this.name = name;
    this.age = age;
}

Person.prototype.getName = function(){
    return this.name + '입니다';
}
これを同じクラスに設定すると、プロトタイプとして除外することなく、クラス内でメソッドを指定できます.
class Person{
    constructor(name,age,location){
      //fields
        this.name = name;
        this.age = age;
        this.location = location;
    }
	//methods
    getName(){
        return this.name + '입니다';
    }
}
これはnewジェネレータを使用してインスタンスオブジェクトを作成および出力した場合の結果です.
const me = new Person('jang',10,'Korea');
const you = new Person('kim',20,'China');

console.log(me); //Person { name: 'jang', age: 10, location: 'Korea' }
console.log(you); //Person { name: 'kim', age: 20, location: 'China' }
console.log(me.getName()); //jang입니다
クラスの拡張/継承
1つのクラスから作成されたデータは、別のクラスから継承して使用することもできます.
extendsclass Child extends Parent
class Animal{
    constructor(name, sound){
        this.name = name;
        this.sound = sound;
    }

    getInfo(){
        console.log(
            this.name + '가(이)' + this.sound + '소리를 낸다.'
        );
    }
}
// 확장
class Friends extends Animal{
    constructor(name, sound){ 
        super(name, sound)
    }
}

const dog = new Friends('개','멍멍');
const cat = new Friends('고양이','냐옹');

dog.getInfo(); // 개가(이)멍멍소리를 낸다.
cat.getInfo(); // 고양이가(이)냐옹소리를 낸다.
クラスFriendsを使用してdog、catという名前のオブジェクトを作成します.これらのオブジェクトはFriendsの親Animalが持つメソッドにアクセスできます.
💡 ここでは、既存のクラス(親)と同じコンストラクション関数をFriendsで作成しますが、コンストラクション関数を作成する必要はなく、親のコンストラクション関数が自動的に呼び出されます.
また、カスタムジェネレータを継承クラスに追加し、既存の親ジェネレータを継承して使用する場合は、superというキーワードを使用して親ジェネレータに直接書き込むことができます.
に火をつける
継承されたクラスでは、より多くの新しいメソッドを定義するか、既存の親メソッドを上書きすることで再定義できます.
親メソッド、ジェネレータを呼び出すにはsuper.method()super(constructor)を使用します.
class Friends extends Animal{
    constructor(name, sound){ 
        super(name, sound) // 부모의 생성자 함수를 호출
    }
    sleep() {
        console.log(this.name + '가(이) 자고 있다.');
    }
    getInfo(){ // 오버라이딩할 메서드
            super.getInfo(); 
            this.sleep();
    }
}

const dog = new Friends('개','멍멍');
const cat = new Friends('고양이','냐옹');

dog.sleep(); // 개가(이) 자고 있다.
cat.getInfo(); // 고양이가(이)냐옹소리를 낸다. 고양이가(이) 자고 있다.