我正在构建一个调用另一个函数的JS函数。我正在使用外部函数,以便更容易将所需信息传递给内部函数。以下是当前的内部功能:
someFunction("trackUnstructEvent", {
schema: "iglu:com.example/" + some_event_name + "/jsonschema/1-0-0",
data: {
timeStamp: new Date()
}
},
[{
schema: "iglu:com.example/people/jsonschema/1-0-0",
data: JSON.stringify(user)
},
{
schema: "iglu:com.example/widgets/jsonschema/2-0-0",
data: { JSON.stringify(widgets)
}]
)
此功能分为三个部分:
A部分,总是需要的:
someFunction("trackUnstructEvent", {
schema: "iglu:com.example/" + some_event_name + "/jsonschema/1-0-0",
data: {
timeStamp: new Date()
}
},
B部分,可选:
[{
schema: "iglu:com.example/people/jsonschema/1-0-0",
data: JSON.stringify(user)
},
和C部分,也是可选的:
{
schema: "iglu:com.example/widgets/jsonschema/2-0-0",
data: JSON.stringify(widgets)
}]
)
目前,我正在使用if else语句来选择在内部函数中使用哪些部分,但这看起来很笨拙。我希望能够获得构建一个函数的想法,该函数将使用A部分而不在函数中多次使用,并且还允许动态插入部分B和C,具体取决于它们各自的参数是否填充在外部函数中呼叫。顺便说一下,外部函数调用就是这样:
igluEvent(some_event_name, people, widgets){...}
因此,如果包含人员,则包含some_event_name和people代码,但不包括小部件代码。
非常感谢您的想法/建议。如果我需要添加一些内容以帮助解释问题,请告诉我。
谢谢!
答案 0 :(得分:0)
在这种情况下,您可以使用Function.apply
。您可以将参数存储在数组中,并仅在IF语句中附加到此数组。最后,您可以使用:someFunction.apply(this, argumentArray)