【问题标题】:In JavaScript, is constructor mandatory in a class?在 JavaScript 中,类中的构造函数是强制性的吗?
【发布时间】:2018-02-07 06:40:11
【问题描述】:

我正在阅读来自 Mozilla documentation section of 'Class body and method definitions' 的 JavaScript 类。在 Constructor 部分下,它声明

构造函数方法是一种特殊的方法,用于创建和初始化使用类创建的对象。一个类中只能有一个名为“constructor”的特殊方法。如果类包含多次出现的构造函数方法,则会抛出 SyntaxError。 构造函数可以使用 super 关键字调用超类的构造函数。

从上面的陈述中,我可以确认我们不能有多个构造函数。但它没有提到构造函数在 JavaScript 中的类声明/表达式中是否是强制性的。

【问题讨论】:

    标签: javascript ecmascript-6


    【解决方案1】:

    你应该只写一个没有构造函数的类,看看它是否有效:)

    来自same docs

    如前所述,如果您不指定构造方法,则使用默认构造方法。对于基类,默认构造函数是:

    constructor() {}
    

    对于派生类,默认构造函数是:

    constructor(...args) {
      super(...args);
    }
    

    【讨论】:

    • 感谢您的指出,我没有意识到Mozilla文档中有专门针对构造函数的页面,我的错误:)
    • 是的,你可以只测试这些东西,但是对于那些阅读谷歌的人来说比手动测试更快。所以他一开始就问是件好事。
    • 是的,但是 JavaScript 很容易测试自己,当我意识到我可以在互联网上阅读时尝试自己时,我的学习有了很大的进步。因此,鼓励自己尝试总是有用的。例如在浏览器中按 f12。
    【解决方案2】:

    不,没有必要。默认构造函数定义为:

    constructor() {}
    

    对于继承,我们使用这个构造函数来调用超类:

    constructor() {
        super.call()
    }
    

    【讨论】:

      猜你喜欢
      • 2013-11-16
      • 2011-02-10
      • 2022-12-09
      • 2020-03-17
      • 2016-01-12
      • 1970-01-01
      • 2019-04-20
      • 1970-01-01
      • 2011-05-06
      相关资源
      最近更新 更多