You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从包含类的对象中选取属性?附Tone.js实现代码

你的实现方式完全可行

这种通过对象存储类引用、再通过字符串key动态选取类的写法完全合理,是JavaScript里很常见的动态类实例化技巧。

为什么可行?

你的voices对象中存储的是各个Tone合成器类的构造函数引用,当你用voices[synth_id]获取对应值时,拿到的就是完整的类构造函数——完全可以直接传给Tone.PolySynth作为第一个参数(Tone.PolySynth的构造函数本身就接受单个合成器的类作为第一个参数),后续的实例化和连接输出逻辑也没问题。

可以优化的小细节

为了避免传入无效的synth_id导致报错,可以加个简单的校验:

function switch_synth(synth_id) {
  const SynthClass = voices[synth_id];
  // 校验是否存在对应的合成器类
  if (!SynthClass) {
    console.error(`不存在ID为${synth_id}的合成器`);
    return;
  }
  const synth = new Tone.PolySynth(SynthClass, 6).toDestination();
  console.log(SynthClass);
}

另外要注意,Tone.PolySynth的第二个参数如果是数字,代表的是最大复音数,你的用法是正确的。

内容的提问来源于stack exchange,提问作者KonVas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 13:10:37