JavaScript中的super關鍵字
在JavaScript中,super關鍵字常用于子類中繼承來自父類的屬性和方法。它可以讓開發者重用代碼并節省幾行代碼,讓代碼更易于理解。下面我們來看一些具體的例子。
super作為構造函數
首先,我們來看super作為構造函數時的用法。
class Person { constructor(name) { this.name = name; } } class Student extends Person { constructor(name, age) { super(name); this.age = age; } } const student = new Student('Lucy', 18); console.log(student); // {"name": "Lucy", "age": 18}
在上面的例子中,子類Student繼承了父類Person的構造函數,并且通過super關鍵字將父類的name屬性傳遞給了子類。這樣就可以輕易地使用繼承的屬性了。
super作為方法
接下來,我們來看super作為方法時的用法。
class Animal { constructor(name) { this.name = name; } sayName() { console.log(My name is ${this.name}.
); } } class Dog extends Animal { constructor(name, breed) { super(name); this.breed = breed; } sayName() { super.sayName(); console.log(I am a ${this.breed}.
); } } const dog = new Dog('Lucky', 'Golden Retriever'); dog.sayName(); // My name is Lucky. I am a Golden Retriever.
在上面的例子中,子類Dog繼承了父類Animal的sayName方法,并且在子類中使用了super.sayName()調用了父類的sayName方法,同時又加上了自己的品種信息。這樣就可以在不覆蓋原有方法的情況下,進行方法的擴展和改進。
super作為對象
最后,我們來看super作為對象時的用法。
class Human { constructor(name) { this.name = name; } sayHi() { console.log(Hi, my name is ${this.name}.
); } } class Boy extends Human { constructor(name, hobby) { super(name); this.hobby = hobby; } introduce() { const human = { sayHi() { super.sayHi(); console.log(I like ${this.hobby}.
); } }; human.sayHi(); } } const boy = new Boy('Jack', 'playing football'); boy.introduce(); // Hi, my name is Jack. I like playing football.
在上面的例子中,子類Boy通過一個名為human的對象來訪問父類Human中的sayHi方法,并在其中使用super.sayHi()調用了父類的sayHi方法,同時又使用了子類Boy自己的hobby屬性。這樣就可以通過一個對象來使用super關鍵字在父類和子類之間進行信息的傳遞和處理。
總結
從上面的例子可以看出,JavaScript中的super關鍵字在子類繼承父類時非常有用,可以讓我們輕松地重用代碼并且擴展方法,讓代碼更具可維護性。使用super關鍵字進行代碼的繼承和擴展可以讓我們的代碼更加簡潔明了,提高代碼的可讀性和可維護性。