JavaScript 類別基礎

在 JavaScript 中並沒有真正的「類別」,使用 class 宣告出來的內容其實是「函式」,也就是說類別是 ES6 中增加的語法糖。

基礎建立物件、建構子、方法宣告:
    
class User {
    // 建構子
    constructor(id, name) {
        this.age = id;
        this.name = name;
    }

    // 方法
    toString() {
        return this.age + " " + this.name;
    }
}

let user1 = new User(1, "John");
let user2 = new User(2, "Mary");

console.log(user1.toString()); // 1 John
console.log(user2.toString()); // 2 Mary
    

靜態方法

    
class User {
    // 靜態方法
    static compare(user1, user2) {
        return user1.age === user2.age && user1.name === user2.name;
    }
}
    

等效於:
    
class User {
}

User.compare = function (user1, user2) {
    return user1.age === user2.age && user1.name === user2.name;
}
    

類別繼承

使用 extends 關鍵字繼承,並在方法中可以使用 super 關鍵字呼叫父類別中的同名方法。
    
class Admin extends User {
    constructor(id, name, role) {
        super(id, name);
        this.role = role;
    }

    toString() {
        return super.toString() + " " + this.role;
    }
}
    


註: 如果需要使用 super() 關鍵字,則需要將 super 放在方法的首行

留言