ECMAScript 2015 的類別設計初探


 ECMAScript 2015

ECMAScript 2015 支援類別設計,通常具備特定物件導向語言基礎的技術人員可以很容易理解JavaScript 這一部份的新功能,以下建立一個類別支援重量單位的轉換運算。

class KgUnitc {
    constructor(kg) {
        this.kg = kg ;             
    }
    Conversion() {
        return this.kg * 1000;
    }
    static Desc() {
        return "重量單位轉換程式(Kg -> g";
    }
}

首先以class 宣告,然後以 constructor 設計所需的建構式,參數kg為此類別所要轉換公斤數,Conversion() 為類別方法,其中將建構式所接收的公斤單位參數轉換為公克。最後的 Desc() 輸出此類別的功能描述,由於每個類別的結果均相同因此以關鍵字 static 宣告為靜態方法,直接利用類別名稱進行引用即可。

var kc =new KgUnitc(5);
var g = kc.Conversion();
console.log(KgUnitc.Desc());
console.log(g);

第一行利用new關鍵字建立一個 KgUnitc 類別物件,並且指定要轉換的數值為5公斤,緊接著調用 Conversion() 進行轉換,接下來以KgUnitc類別名稱直接引用靜態方法Desc()輸出此物件的功能描述,最後輸出轉換結果。

重量單位轉換程式(Kg -> g
5000

除了封裝資料與邏輯運算,類別設計最重要的另外一個特性是繼承機制,當然這同樣是ECMAScript 2015內建支援的功能,針對上述的類別,我們另外衍生一個類別,支援密度相關單位的運算工作。

class DKgUnitc extends KgUnitc {
constructor(kg) {
      super(kg);
}
DConversion(v) {             
return this.kg / v;
     }
}
var dkc = new DKgUnitc(200);
var vg = dkc.DConversion(5);
console.log(vg);

新類別 DKgUnitc 透過 extends 關鍵字繼承 KgUnitc 的功能,建構式中的super() 執行父類別的建構式,而方法 DConversion() 則是擴充的方法,計算指定的體積與重量所得到的密度值。

沒有留言: