每次忘記怎麼動態使用都會回頭看flaviocopes,flaviocopes這篇文章很清楚講解如何動態呼叫函式。比起文章使用if, else的用法,我更喜歡用mapping的方式呼叫函式。
先不要看a, b, c是什麼function。利用First-class-citizen的特性,把a, b, c三個class指派給變數,接著使用functionList去動態的呼叫函式。圖中第10行實際上為 let functionList = (() => ({ a: a, b: b, c: c }))()
。我們使用functionList[<字串>]()動態呼叫函式。或者我們可以使用functionCallList[<字串>],在functionCallList裡面就直接call函式,以便用更優雅的呼叫函式。
動態呼叫
專案裡面很常使用下列第9行呼叫function的方式來做,當dynamicExec裡面值不一樣,呼叫的結果也不一樣。MemberCenterPageADMappingEnum, homePageADMappingEnum本身已經是函式執行的結果(IIFE),回傳的是Object。