我对同一个函数有多个调用,每个调用都传递一个不同的options对象。例如:
function masterStart() {
A(optionsA);
A(optionsC);
}
我不知道如何编写函数A()
中的代码以使用每个对象的传递参数?例如,如果仅使用对象optionsA
,则可以通过编写A()
在函数optionsA.soundFileName
中访问它们。但是,当第二次调用A()
并传递对象optionsC
的参数时,我该怎么办?
这是我的代码的精简版,尚无法从objectC访问参数:
var optionsA = {
soundFileName: 'audio/60.wav',
};
var optionsC = {
soundFileName: 'audio/90.wav',
};
masterStart();
function masterStart() {
A(optionsA);
A(optionsC);
}
function A() {
soundFileName = optionsA.soundFileName;
console.log('soundFileName: ' + soundFileName)
// This logs "audio/60.wav" twice instead of "audio/60.wav" and "audio/90.wav"
// THE REST OF THE CODE THAT PLAYS AND LOOPS THESE SOUNDS SHOULD FOLLOW HERE
}
一个相关的问题:如果同时初始化A()
和C()
,则有时仅运行一个函数,或者有时运行另一个函数的参数(以我的经验),因为javascript是单线程的。是否有比延迟初始化一个更好的解决方案(使我在这段代码中没有做到),而不是使它们准确执行?
答案 0 :(得分:3)
您可以这样做
function A(params) {
soundFileName = params.soundFileName
// and the rest
}
或类似的
function A({soundFileName}) {
console.log(soundFileName)
//...
}
编辑:摘要
const optionsA = {
soundFileName: 'audio/60.wav',
}
const optionsC = {
soundFileName: 'audio/90.wav',
}
function A(params) {
console.log("soundFileName: " + params.soundFileName)
}
A(optionsA)
A(optionsC)