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());