在函数中重复使用相同的JS函数和对象

时间:2015-10-20 03:02:02

标签: javascript json function

我正在构建一个调用另一个函数的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代码,但不包括小部件代码。

非常感谢您的想法/建议。如果我需要添加一些内容以帮助解释问题,请告诉我。

谢谢!

1 个答案:

答案 0 :(得分:0)

在这种情况下,您可以使用Function.apply。您可以将参数存储在数组中,并仅在IF语句中附加到此数组。最后,您可以使用:someFunction.apply(this, argumentArray)

来调用它