3

関数オブジェクトを作成し、その関数 API を呼び出す Util 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 を使用する方法は? ?

4

2 に答える 2

4

FunctionUtils.invokeAndInflate関数は次のように書き換えることができます。

FunctionUtils.invokeAndInflate = function(object, functionName, parameterValue) {
    object[functionName].apply(object, Array.prototype.slice.call(arguments, 2));
}
于 2013-05-13T13:39:16.387 に答える
0

.call() と .apply() について読むことをお勧めします。ここにそれらに関する記事があります。 http://odetocode.com/blogs/scott/archive/2007/07/05/function-apply-and-function-call-in-javascript.aspx

于 2013-05-13T13:16:45.080 に答える