将函数名称作为参数传递给另一个不起作用的函数javascript

时间:2017-02-27 16:33:51

标签: javascript

我有一个名为myObject的类,它有多个方法,其中一个是add。我正在使用另一个带有参数的函数,我希望使用myObject的函数。如果我想使用add,我会将其传递给“添加”。如果我想使用delete,我会将其传递给'删除'等。在函数test的定义中,如果我使用obj.add它可以正常工作,但如果我使用obj.func,传递的参数,它不起作用。我测试了以确保func = add,它确实是,但由于某种原因它不适用于参数。我有什么想法吗?

testObj = new myObject();
test(testObj, 'add', 3);


function test(obj, func, parm){
     var answer = obj.func(parm);
}

1 个答案:

答案 0 :(得分:2)

由于对象在javascript中的工作方式。 obj.func将尝试在名为func的obj中运行一个函数。但是,如果你记得javascript中的所有对象都是函数。然后你可以这样做:obj[func]它将评估funct变量并在obj中查找具有该评估名称的方法。

testObj = new myObject();
test(testObj, 'add', 3);


function test(obj, func, parm){
     var answer = obj[func](parm);
}