簡體   English   中英

如何動態地將多個參數傳遞給函數?

[英]How to pass multiple parameters to a function dynamically?

我創建了一個Util API來創建函數對象並調用它的函數API

function FunctionUtils() {

}

FunctionUtils.createFunctionInstance = function(functionName) {
     var obj = FunctionUtils.createFunctionInstanceDescend(window, functionName);
     return new obj();
}

FunctionUtils.createFunctionInstanceDescend = function(obj, path) {
     var parts = path.split('.');

     for(var i = 0; i < parts.length; i++) {
         obj = obj[parts[i]];
     }

     return obj;
}


FunctionUtils.invokeAndInflate = function(object, functionName, parameterValue) {
     object[functionName](parameterValue);
}

這個Util API適用於以下代碼:

function Student() {

     var firstName;

     var city, country;

     this.getFirstName = function() {
          return firstName;
     }

     this.setFirstName = function(val) {
          firstName = val;
     }

     this.getAddress() {
          return city + country;
     }

     this.setAddress(val1, val2) {
          city = val1;
          country = val2;
     }

}


var student = FunctionUtils.createFunctionInstance("Student");
FunctionUtils.invokeAndinflate(student, "setFirstName", "Pranav"); //Works

FunctionUtils.invokeAndInflate(student, "setAddress", "LA", "USA"); //Doesn't Work.

如何將FunctionUtils.invokeAndInflate API用於多個參數?

您可以重寫FunctionUtils.invokeAndInflate函數,如下所示:

FunctionUtils.invokeAndInflate = function(object, functionName, parameterValue) {
    object[functionName].apply(object, Array.prototype.slice.call(arguments, 2));
}

我建議你閱讀.call()和.apply(),這里有一篇關於它們的文章。 http://odetocode.com/blogs/scott/archive/2007/07/05/function-apply-and-function-call-in-javascript.aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM