クラス
クラス{ コンストラクター(○○){this.プロパティ = ○○} メソッド }
で設計図を作る
new クラス();でインスタンス化
プロパティに値を渡す方法
クラス{ コンストラクター(値){this.プロパティ=値} メソッド }
new クラス(値);
コンストラクター
クラスをインスタンス化するためのメソッド
インスタンス化:オブジェクトのプロパティに値を渡してあげる
継承:クラスを進化させる
親クラスをスーパークラス、子クラスをサブクラスと呼ぶこともある
プロパティやメソッドの追加
継承先クラス extends 元クラス{ コンストラクター(新引数){this.新プロパティ=〇〇} 新メソッド }
プロパティのオーバーライド
継承先クラス extends 元クラス{ コンストラクター(新引数、旧引数){super(); this.オーバーライドしたいプロパティ=××;} }
メソッドのオーバーライド
継承先クラス extends 元クラス{ コンストラクター(){super();新規プロパティ} 既存メソッド(super.既存メソッド;追加機能) }
プライベートプロパティ
インスタンスのプロパティは通常
インスタンス名.プロパティ名で取得できる
class dog{constructor(color){this.color=color}} siro = new dog(white); console.log(siro.color) #white
このように直接参照できるプロパティをパブリックプロパティという
class dog{constructor(color){this.#color=color}}
のようにプロパティの前に#をつけることで参照できないプライベートプロパティとなる。
プライベートプロパティの更新(セッター、ゲッター)
メソッドを経由するとプロパティの値を参照、更新できるようになる。
ゲッターで参照、セッターで更新
クラス{ コンストラクター ゲッター(){return this.#プライベートプロパティ} セッター(更新したい値){this.#プライベートプロパティ= 更新したい値 }
ゲッターセッターのモダンな書き方
get メソッド名、set メソッド名でゲッターとセッター両機能が同じメソッド名で登録できる。
クラス{ コンストラクター get A(){return this.#プライベートプロパティ} set A()(更新したい値){this.#プライベートプロパティ= 更新したい値 }
同じインスタンス名.A();で呼び出せる
静的メソッド、静的プロパティ
プロパティは基本的インスタンス化していないと呼び出せない。
しかし
クラス{ static 静的プロパティ=○○ コンストラクター static 静的メソッド }
とするとインスタンス化しなくても呼び出せる。
thisがさすもの
①メソッド内のthis:基本的に所属オブジェクト
※プロパティに外で定義した関数を入れる:所属するオブジェクト
※メソッド内関数:window
②アロー関数のthis:オブジェクトの中に入れててもwindowを参照する。
③コンストラクタのthis:よく見るやつ。所属オブジェクト。
④その他:window
その他もろもろ
メッソドチェーン:オブジェクト.メッソド.メソッドとつなげていくとメソッドをまとめて実行できる。
clall:関数をオブジェクトのメソッドとして実行する