javascript 使用存储在变量上的名称调用方法
javascript call a method with a name stored onto a variable
我是 js 编程的新手。我正在为测试开发工作。我需要使用存储在文件中的名称调用 js 函数。例如我有两个文件,
file1.sah
//sah is sahi extension but internally the file has javascript code only
function test(){
this.var1 = 100;
this.logFunc = function(a,b,c){
console.log(a + b + c + this.var1);
}
}
file2.sah
include file1.js //file1.js module is referenced
var obj = new test();
var $method = "logFunc";
var $params = {"a" : 1, "b" : 2, "c" : 3};
//wanted to call the method "test" from file1 and pass all arguments as like key & value pair in object
//I cannot use window objects here
eval($method).apply(obj, $params);
//eval works but I couldn't pass the object params I have. For simplicity I //have initialised params in this file. In my real case it will come from a
//different file and I will not know the keys information in the object
您可以使用 "bracket notation"。
someObject [ someVariable ] ( theArguments )
如果 someObject(包括 "this")有一个函数,无论该变量的值是什么,都将使用这些参数调用它。
您可以使用括号表示法动态访问对象 属性。
但在您的示例中,您的方法名称似乎有误。 test
是构造函数的名字,方法调用的是logFunc
。需要先调用构造函数,它会return一个对象,然后就可以动态访问方法了
要动态提供参数,您必须将它们放入数组中,而不是对象中。然后就可以用Function.prototype.apply()
调用方法了
var obj = new test();
var method = 'logFunc';
var params = {"a" : 1, "b" : 2, "c" : 3};
var param_array = [params.a, params.b, params.c];
obj[method].apply(obj, param_array);
我是 js 编程的新手。我正在为测试开发工作。我需要使用存储在文件中的名称调用 js 函数。例如我有两个文件,
file1.sah
//sah is sahi extension but internally the file has javascript code only
function test(){
this.var1 = 100;
this.logFunc = function(a,b,c){
console.log(a + b + c + this.var1);
}
}
file2.sah
include file1.js //file1.js module is referenced
var obj = new test();
var $method = "logFunc";
var $params = {"a" : 1, "b" : 2, "c" : 3};
//wanted to call the method "test" from file1 and pass all arguments as like key & value pair in object
//I cannot use window objects here
eval($method).apply(obj, $params);
//eval works but I couldn't pass the object params I have. For simplicity I //have initialised params in this file. In my real case it will come from a
//different file and I will not know the keys information in the object
您可以使用 "bracket notation"。
someObject [ someVariable ] ( theArguments )
如果 someObject(包括 "this")有一个函数,无论该变量的值是什么,都将使用这些参数调用它。
您可以使用括号表示法动态访问对象 属性。
但在您的示例中,您的方法名称似乎有误。 test
是构造函数的名字,方法调用的是logFunc
。需要先调用构造函数,它会return一个对象,然后就可以动态访问方法了
要动态提供参数,您必须将它们放入数组中,而不是对象中。然后就可以用Function.prototype.apply()
调用方法了
var obj = new test();
var method = 'logFunc';
var params = {"a" : 1, "b" : 2, "c" : 3};
var param_array = [params.a, params.b, params.c];
obj[method].apply(obj, param_array);