🍌

JSのclassについての雑なメモ

2022/06/26に公開

classの定義

// 巻き上げはできないよ
class Hoge {
	toString(){
		return "fuga"
	}
}

classの継承

class HogeHoge extends Hoge {
	toString(){
		return "fugafuga"
	}
}

匿名class

// 名前有り
const Hoge = class Hoge {
	toString(){
		return "fuga"
	}
}
// 名前なし
const Hoge = class {
	toString(){
		return "fuga"
	}
}

匿名class(継承)

// 名前有り
const Hoge = class HogeHoge extends Hoge {
	toString(){
		return "fugafuga"
	}
}
// 名前なし
const Hoge = class extends Hoge {
	toString(){
		return "fugafuga"
	}
}

継承のとこには式を入れられるよ

class HogeHoge extends (class Hoge {toString(){return "fuga"}}) {
	toString(){
		return "fugafuga"
	}
}

おまけ

オブジェクトにはセッターとゲッターってのがあるよ。クラスにもあるよ。

({
	get fugafuga(){
		return "hogehoge"
	},
	set hogehoge(value){
		console.log(value)
	}
})

privateプロパティは、#hogehogeなどの形で追加できるよ

class Hoge {
	#fuga = "fuga"
}

オブジェクトのキーには式の結果も指定できるよ

// データが存在しないはずのインデックスに謎の文字列が...。
class MyArray extends Array {
	get[0](){
		return "祝ってやる"
	}
}

staticなやつは、

class Hoge {
	static ああああああああああああああああああああああああああああ = 1234567890
}

キーの型には、stringSymbolの二種類があるよ。
number型のキーだと思ってたものは実は文字列へ変換されたnumberってことなんだよね。

Discussion