自從我開始使用ES6以來,我一直在使用擴展聲明class ClassB extends ClassA {}
來擴展類,並且自從最近那是我看到它的唯一途徑。類之間的差異擴展聲明在Javascript中
另一天,當閱讀文曼文檔時,我注意到他們正在擴展類module.exports = class extends ClassA {}
。
我認爲這些聲明必須是用不同的方式來表達完全相同的東西。我測試了以下代碼來確認我的懷疑,但它並不像我所希望的那樣清晰:
class ClassA {
constructor(width) {
this.width = width
}
}
let ClassB = class extends ClassA {
constructor(width, height) {
super(width)
this.height = height
}
}
class ClassC extends ClassA {
constructor(width, height) {
super(width)
this.height = height
}
}
let instanceB = new ClassB(10, 10)
let instanceC = new ClassC(10, 10)
當我考察了鍍鉻我注意到,對於變量的構造instanceB
和instanceC
略有不同的演示:
- instanceB: ClassB
- __proto__: ClassA
- constructor: class extends
- instanceC: ClassC
- __proto__: ClassA
- constructor: class ClassC
我的問題是這些擴展聲明是否完全相同,儘管它們在檢查員中的描述略有不同?
我建議繼續使用類聲明。您可以在ES6模塊中將它們與'export'或'export default'結合使用。 – Bergi