函数如何适应将不同对象作为参数传递的调用?

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)