函数如何适应将不同对象作为参数传递的调用?
How can function accommodate calls passing different objects as parameters?
我多次调用同一个函数,每次调用都传递不同的选项对象。例如:
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 是单线程的。有没有比延迟初始化一个更好的解决方案来使它们准确执行(我在这段代码中没有这样做)?
你可以这样做
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)
我多次调用同一个函数,每次调用都传递不同的选项对象。例如:
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 是单线程的。有没有比延迟初始化一个更好的解决方案来使它们准确执行(我在这段代码中没有这样做)?
你可以这样做
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)