js 動態調用字符串方法並傳入對應參數

在項目應用中,常常會須要根據業務數據須要動態去拼湊字符串,而後將字符串做爲js代碼進行執行。數組

js提供eval()來支持。這裏分享一個調用函數並傳入須要參數的一個方法demoapp

//動態調用自定義js方法.args是以逗號分隔的參數字符串
var CallFunName = function (fn, args) {
    var aArr = [];//傳入的參數集合

    if (args != null && args != "") {
        aArr = args.split(",");
    }


    try {
        fn = eval(fn);
    } catch (e) {
        console.log(e);
        alert(funName + '方法不存在!');
    }
    if (typeof fn === 'function') {
        try {
            fn.apply(this, aArr );//注意此處用apply,而非call
        }
        catch (ex) {
            console.log(ex);
            alert(funName + '變量個數不對');
        }
    }
}

一、考慮到調用函數方法CallFunName第一個參數(函數名)是在頁面動態添加的js內容(即字符串),故沒有直接支持傳入參數數組的方式,而是一串以逗號分隔的參數字符串函數

二、在方法體內把參數字符串轉換爲數組。而後經過apply調用this

      此處不選用call調用的緣由爲:call調用形式會把參數數組做爲一個變量傳遞給待待用的方法,而每每咱們待調用的方法參數不是以數組形式聲明的:spa

function Fun(arg1,arg2,...)
{
      ...
}
相關文章
相關標籤/搜索