2016-06-28 26 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

正如我测试你的代码,它工作正常,但现在我用对象的访问方法代替。 –

相关问题