ES6有關子類的操作

出處: Youtube 彭彭的課程  

JavaScript ES6:定義子類別並操作子類別物件

Udemy JavaScript、React、Flask、MongoDB 網站全端開發:從入門到進階

參考彭彭老師的課程,練習寫了一個icoca卡的使用和充值的小程式

    // 定義一個類別
    class Card{
        constructor(name){
            this.name=name; // 定義name在父類別中
        };
        use(){
            console.log(this.name + " is using this card. ")
        }
    };

    // 定義子類別
    class icoca extends Card{
        constructor(name){
            super(name);
            this.balance=1000; //衍生更多子類別、電動車專屬定義
        };
        use(price){ //在子類別中定義use方法,取代父類別中的同名方法
            this.balance -= price;
            console.log( this.name+ " use "+ price+"$");
            //nini use 180$
        };
        charge(money){ //在子類別中定義charge方法
            this.balance += money;
            console.log( this.name+ " charged "+ money+"$");
            //nini charged 1000$
        };
    };

    // 產生子類別物件
    let card = new icoca("nini");
    // 子類別物件同樣擁有父類別中定義的屬性
    console.log("card name is: " +card.name );// card name is: nini
    // 使用子類中定義的屬性
    console.log("Balance is: " +card.balance );// Balance is: 1000

    card.use(180)// 使用子類中定義的屬性方法
    // 使用子類中定義的屬性
    console.log("The balance of "+this.name+ "'s card  is "+card.balance); 
    //The balance of 's card  is 820

    card.charge(1000)// 使用子類中定義的屬性方法
    // 使用子類中定義的屬性
    console.log("The balance of "+this.name+ "'s card  is "+card.balance); 
    //The balance of 's card  is 1820