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(){...}
};