【问题标题】:Workaround to give an ES6 class multiple constructors?ES6 类具有多个构造函数的解决方法?
【发布时间】:2022-10-24 10:18:34
【问题描述】:

我正在尝试使用两个构造函数创建一个 ES6 类。代码如下所示:

class MyClass {
  constructor(a, b) {
    this.a = a;
    this.b = b;
  }

  constructor(c) {
    this.a = c;
    this.b = c;
  }
}

但我收到语法错误Uncaught SyntaxError: A class may only have one constructor。是否有任何解决方法可以让我拥有多个构造函数,或者我是否仅限于 JS 中的一个构造函数?

【问题讨论】:

    标签: javascript class ecmascript-6


    【解决方案1】:

    JavaScript 没有内置的重载。但是你可以使用默认参数做你想做的事。

    class myClass {
        constructor(a, b = a) {
            this.a = a;
            this.b = b;
        }
    }
    

    如果它不像你的例子那么简单,你可以给b 一些其他默认值,这不是一个可能的实际值。然后您可以检查该值是否为默认值并运行不同的代码。

    class myClass {
        constructor(a, b = undefined) {
            if (b === undefined) {
                // do the 1-argument initialization
            } else {
                // do the 2-argument initialization
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-12-01
      • 2017-12-30
      • 1970-01-01
      • 2011-02-01
      • 2018-09-25
      • 2014-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多