【JS】ES6から出来るようになったClass構文書き方などについて


es6からのJavaScriptではclass構文が導入されているらしいです!
知らなかった...ので、学習したことをまとめてみます。

class Animal {
    constructor(type){      //コンストラクター
       this.type = type;
    }

    intro(){          //メソッド
        console.log(`${this.type}です。`);
    }
}

 let neko = new Animal('');
 neko.intro();    //猫です。

constructorでインスタンスの際の処理を、
そしてクラスの中にメソッドやプロパティが定義できます。
ただし、C#などと違ってアクセス修飾子は使えません。(全てがどこからでもアクセスできる)

注意!
あくまでクラスと同じ書き方ができるようになった、というもので、内部の処理的には関数。
ただし、今までのFunctionオブジェクトで定義したクラス = class命令で定義したクラスではない!

FunctionのクラスとClass構文のクラスの違い

①関数としての呼び出しは不可!
function命令の方では、それができないようにthisの性質によって条件分岐させたり...と面倒(ここの最後のところ)でしたが、これが不必要になりました!

②定義前のクラスは呼び出し不可!
functionでは呼び出し可能です。

【おまけ】プロトタイプチェーンについて学習しました。

これは私がまとめるよりも、リンク先をみてもらった方がわかりやすいです。
リンク教えてくれた@htsignさんありがとうございます。
https://qiita.com/howdy39/items/35729490b024ca295d6c

プロトタイプのよみやすい定義

ver Animal = function(){};
Animal.prototype.aa = function(){...},
Animal.prototype.bb = function(){...}
};

これでプロトタイプにメンバーを追加できますが、正直プロトタイププロタイプくどいです。
これをオブジェクトリテラルでスッキリさせることができます。

var Animal = function(){...};
Animal.prototype = {
   aa: function(){...},   //スッキリ!
   bb: function(){...}
};