如何在ES6中使用可选参数扩展构造函数+方法?

问题描述 投票:0回答:1

我想扩展AudioBufferSourceNode类,以便可以多次支持声音的播放。我想同时覆盖构造函数和AudioBufferSourceNode / start()方法,但是我不知道如何以“正确”的方式进行操作,因为它们具有可选参数,并且MDN上未提供所有默认值([ C0],stop())。我希望从OOP语言中找到一种更精确的方法签名,以便可以在此基础上进行构建,但是我只能找到本机代码。

那么最正确的方法是什么?

javascript ecmascript-6 web-audio-api
1个回答
0
投票

如果您真的想扩展1,则可以这样操作:

2

在每个函数中AudioBufferSourceNode将是一个包含可选函数参数的数组。我将此数组命名为class MyABSN extends AudioBufferSourceNode { constructor (context, ...args) { super(context, ...args); } start (...args) { super.start(...args); } stop (...args) { super.stop(...args); } } 的事实只是一个约定。如果愿意,可以选择其他名称。

例如,如果您在类的实例上调用start,例如args,则args数组将为myABSN.start(0, 2),而args上的方法将被称为[ 0, 2 ]

您可能还想覆盖supersuper.start(0, 2)方法来跟踪连接。

© www.soinside.com 2019 - 2024. All rights reserved.