2016-06-28 54 views
0

我想用對象來存儲函數名稱和另一個屬性,我將用它來通過Jquery getScript加載jS腳本。 我已經使用inAarray有條件檢查一個對象是否存在於這個數組中我將調用該腳本並執行該函數(func)但我仍然有棧來將該對象值轉換爲JS腳本加載後執行的函數在狀態成功。如何將對象值轉換爲在JavaScript中的功能?

function fetchingData(n_source_id, types, not_id) { 

    var data = { 
     'Loan Repayment':{ 
      url:'/js/load/loan/loan_repayment.js', 
      func:'repayment'// name of function which I will call after JS file successfully loaded 
     }, 
     'Reject Repayment':{ 
      url:'/js/load/loan/repay_change_till_acc.js', 
      func:'changeTill'// name of function which I will call after JS file successfully loaded 
     }, 
     'Issue Till': { 
      url: '/js/load/issueTill.js', 
      func: 'issueTill'// name of function which I will call after JS file successfully loaded 
     } 
    }; 
     $.each(data, function(inx, vals) { 

      var _type = inx; 
      var url = vals; 

      if ($.inArray(types, [_type]) >= 0) { 

       ScriptRequire([vals.url], function(status) { 

        if (status === 'success') { 

         var fun = new Function(vals.function); 

         console.log(fun(n_source_id, types)); 
         return fun; 
        } 
       }); 
      } 
     }); 
    } 

回答

1

由於vals.function持有的函數的名稱,函數應該已經被加載腳本來定義的,不要使用以下方法來獲取函數對象:

var fun = new Function(vals.function); 

相反,使用:

var fun = window[vals.function]; 
+0

現在我決定使用對象方法,而不是它可能比 –

+0

@HengSopheak更好 - 你的意思是通過getScript加入加載的功能不是全局的功能,但性能 一個東西?或者你的意思是你不再尋找你的問題的答案? –

+0

正如我測試你的代碼,它工作正常,但現在我用對象的訪問方法代替。 –

相關問題