LoginSignup
2
0

More than 3 years have passed since last update.

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

Posted at

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0