调用与工厂函数上相同的组成功能的其他功能
问题描述:
有没有办法摆脱就行了这个关键字:调用与工厂函数上相同的组成功能的其他功能
this.getOscillatorConfig(oscNumber);
下面?:
const oscPlayer = (audioContext, voiceConfig) => ({
getOscillatorConfig(oscNumber)
{
return voiceConfig.oscillators[oscNumber];
},
getOscillator(oscNumber)
{
this.getOscillatorConfig(oscNumber);
let vco = audioContext.createOscillator();
vco.type = oscConfig.waveform;
return vco;
},
start: (vco, time, noteLength, frequency) => {
vco.frequency.value = frequency;
vco.start(time);
vco.stop(time + noteLength);
}
});
const octave =() => ({
applyPipeLength: (frequency, pipeLength) => {
return frequency/(parseInt(pipeLength, 10)/8);
}
});
const Voice = (audioContext, voiceConfig) => {
return Object.assign(
{},
oscPlayer(audioContext, voiceConfig),
octave()
)
}
如果我不去使用它,我有getOscillatorConfig是未定义的。
或其他任何建议如何构造这?
答
为了能够省略this
,你必须创建一个名称getOscillatorConfig
的功能你要称呼它是在范围可供选择:
const oscPlayer = (audioContext, voiceConfig) => {
function getOscillatorConfig(oscNumber) {
return voiceConfig.oscillators[oscNumber];
}
return {
getOscillator(oscNumber) {
getOscillatorConfig(oscNumber);
let vco = audioContext.createOscillator();
vco.type = oscConfig.waveform;
return vco;
},
start(vco, time, noteLength, frequency) {
// ...
}
};
};
_“是有办法......”为什么_你想摆脱'this'吗? – Cerbrus