最終更新日 2024-09-25
~文法メモ~ クラスの基本
クラスの骨格
ECMAScript6ではよく見られる「class」を使って、クラスを定義出来るようになりました。
コンストラクターは、そのまま「constructor」というメソッド名です。
public/protected/privateといったアクセス修飾子はありません。
class MyWindow {
constructor(x, y, w, h) {
this.title = "僕のウィンドウ",
this.x = x
this.y = y
this.w = w
this.h = h
}
show() {
return `タイトル:${this.title}, x:${this.x}, y:${this.y}, w:${this.w}, h:${this.h}`;
}
}
let win = new MyWindow(10, 20, 500, 300);
hm.debuginfo(win.show());
匿名クラス
関数同様に、クラスも匿名クラスが利用可能です。
これにより「変数に代入」したり、「クラス定義そのものを返す関数」の定義なども可能です。
let MyWindow = class {
constructor(x, y, w, h) {
this.title = "僕のウィンドウ",
this.x = x
this.y = y
this.w = w
this.h = h
}
show() {
return `タイトル:${this.title}, x:${this.x}, y:${this.y}, w:${this.w}, h:${this.h}`;
}
}
let win = new MyWindow(10, 20, 500, 300);
hm.debuginfo(win.show());
function GetMyWindowClassType() {
let T = class {
constructor(x, y, w, h) {
this.title = "僕のウィンドウ",
this.x = x
this.y = y
this.w = w
this.h = h
}
show() {
return `タイトル:${this.title}, x:${this.x}, y:${this.y}, w:${this.w}, h:${this.h}`;
}
}
return T;
}
let MyClass = GetMyWindowClassType();
hm.debuginfo(new MyClass(10,20,500,300).show());