如何从包含类的对象中选取属性?附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
相关产品推荐
相关产品推荐

