javascript特有のクラス宣言
2022年から新卒エンジニアとして開発していて、これまでjavascript特有のクラス宣言を見てきました。その中には最近知ったものもありましたので、今回は私が今まで見てきたクラス宣言の紹介したいと思います。
ただの連想配列
/*
連想配列に無名関数を設定して擬似クラスを作成する
イニシャライズの代わりにディープクローンをする
*/
const classOne = {
init() {
print('============11')
},
}
const classOneIncetance = { ...classOne }
classOneIncetance.init()
このケースの1番のデメリットはイニシャライズが存在しなく、インスタンスが生成されないことです。今回はディープクローンで擬似的にイニシャライズしていますが、連想配列の階層がもう1つ深くなるとクローンできなくなるので注意が必要です。
new 演算子
/*
オブジェクト型やコンストラクター関数を持つ組み込みオブジェクト型のインスタンスを作成
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Operators/new
*/
function classTwo() {
this.init = function() {
print('============22')
}
}
const classTwoInstance = new classTwo()
classTwoInstance.init()
これが最近知ったクラス宣言です。new演算子を使うことでインスタンスが生成されます。
クラス
/*
一般的なクラス宣言
https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Classes
*/
class classThree {
init() {
print('============33')
}
}
const classThreeInstance = new classThree
classThreeInstance.init()
これがES5から使えるようになったクラス宣言です。newすることでインスタンスが生成されます。
最近ではプライベートなデータやメソッドが持てるようになっています。
最後に
他のクラス宣言の方法を知ってたり、間違いに気づいたたは、コメントお願いします。