2015-10-20 44 views
0

我在構建一個調用另一個函數的JS函數。我使用外部函數來更容易地將所需的信息傳遞給內部函數。下面是當前內部函數:在函數中重複使用相同的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語句來選擇在內部函數中使用哪些部分,但看起來很笨重。我希望能夠獲得構建一個函數的想法,該函數不會在函數中多次使用該函數,並且還允許動態插入B和C部分,具體取決於它們各自的參數是否填充到外部函數中呼叫。 BTW,外部函數調用很簡單:

igluEvent(some_event_name, people, widgets){...} 

所以,如果人們被包括在內,some_event_name和人民代碼包含,但不是小部件代碼。

非常感謝您的意見/建議。請讓我知道是否有什麼我需要添加來幫助解釋這個問題。

謝謝!

+0

爲什麼「函數中的函數A多次」?您的IF語句是否重複了A部分代碼? – sahbeewah

+0

正確,A部分僅存在多次,因爲它在每個IF語句中。 –

+0

我真的不確定你在問什麼。如果代碼正在運行,則您的問題確實屬於http://codereview.stackexchange.com而不是此處。 – traktor53

回答

0

在這種情況下,您可以使用Function.apply。您可以將參數存儲在數組中,並且只能在IF語句中附加到該數組。最後,您可以使用以下方式調用它:someFunction.apply(this, argumentArray)

相關問題