【问题标题】:ES6 class super() with variadic arguments具有可变参数的 ES6 类 super()
【发布时间】:2016-07-18 22:55:21
【问题描述】:

在 ES6 中,有没有办法通过可变参数调用父构造函数,例如 foo.apply(this, arguments)?我一直在寻找答案,我看到的唯一实例是调用super()(无参数)或调用super(x, y)(带有特定参数)。 super.apply(this, arguments) 似乎不起作用。

【问题讨论】:

  • 扩展运算符更适用。
  • 如果this 已经初始化,super.constructor.apply(this, arguments) 会起作用

标签: javascript ecmascript-6 subclass


【解决方案1】:

我觉得方便并遵循的模式是

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

如果你有并使用命名参数,你可以这样做:

constructor(a, b, c) {
    super(...arguments);
}

参考资料:

【讨论】:

  • 如果您在浏览器中使用它,请注意扩展运算符支持,因为支持是相当新的,并且由于某种原因,对扩展运算符的支持比其他 ES6 功能(例如 class)晚。例如,我认为没有任何 IE 支持。当然,您也可以使用转译器。
  • @jfriend00 IE 几乎不支持 ES2015 中的任何东西,所以,谁在乎 :-)
  • 很容易找到正在使用的不是最新的 Chrome 版本并且支持class,但不支持扩展运算符。我只是建议 OP 确保他们拥有所需的浏览器支持。不要那么防御。如果您的环境支持,这是一个很好的答案。
  • 啊,我不知道将扩展运算符用作应用程序,这非常方便。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-23
  • 2019-04-25
相关资源
最近更新 更多