見出し画像

JS学習記録第12回 Classとインスタンス

こんばんは。今回はJSのClassとインスタンスについてまとめてみようと思います。
これがわかればJSの使える範囲が大きく増えると感じました!


Classとインスタンス

ではまず、classとインスタンスについてまとめてみます!
classとは・・・
html、cssをしている人は分かるかもしれませんが、
ある一つの型(設計書)をまとめたみたいなもののことを言います。
いわゆるテンプレートということですね!

そしてインスタンスは、
Classを用いて作成されたもののことを言います。

マークアップの際にもよく、classの使い回しをすることが多いと思います。
それがJSでも同じようなことができるということです!


簡単にいうと、
JSで似たような記述があった場合を細かく1つにまとめることができるということです!

例を挙げてみます。
例えば以下のように、setTimeoutである特定のClassに時間差でactiveというclassを付与するという記述があるとします。
下記は、
mvCatchというクラスに0.2秒後activeを付与。
mvCatch02というクラスに0.4秒後activeを付与。
mvCatch_subというクラスに0.6秒後activeを付与という意味。

$(document).ready(function () {
   setTimeout(function () {
       $(".mvCatch").addClass("active")
   }, 200);
   return false;
});
$(document).ready(function () {
   setTimeout(function () {
       $(".mvCatch02").addClass("active")
   }, 400);
   return false;
});
$(document).ready(function () {
   setTimeout(function () {
       $(".mvCatch_sub").addClass("active")
   }, 600);
   return false;
});

これだけでもいいのですが、同じような記述があるので、これをまとめることができます!


クラスの記述の仕方は以下の通りです。

class 任意のclass名 {

   constructor(引数を取る){
   
   ここに同じ記述を書く。
   
   }


}
実行する場合↓
new 任意のclass名(引数を取る)

これを以下の通りにコンパクトにまとめることができます!

window.addEventListener('DOMContentLoaded',function(){ ←ブラウザがloadした時に発動
   new TopAnime('.mvCatch', 200);
   new TopAnime('.mvCatch02', 400);
   new TopAnime('.mvCatch_sub', 600);
});


class TopAnime{ ←TopaAnimeというcclass名
   constructor(a,b){ ←引数aとbを取る
       this.a = $(a); ←aはclassのa
       this.b = b; ←bはこのTopAnime内のb
       setTimeout(this._addAnime.bind(this),this.b);
   }
   _addAnime(){  ←_addAnime関数を作成し、aにactiveというclassを付与
       this.a.addClass("active");
   }
}

setTimeout内ではthisはグローバルをみてしまうため、bindで束縛しました。
setTimeout(this._addAnime.bind(this),this.b);

こうすることで、同じような記述がある場合にコンパクトにすることができますし、修正が発生した場合でもすぐに対応が可能です!!


いいなと思ったら応援しよう!

ゆーた 台湾移住🇯🇵🇹🇼
大阪在住の29歳。web制作会社勤務。noteを通してたくさんの出会いを作っていきたいです。台湾が大好きで中国語勉強中。日台夫婦。日々の挑戦の記録や、社会の生きづらさ、台湾のことなどを書いていこうと思います。2023年台湾に移住予定です。