我有一个功能名称=" test"。
如何在知道函数名称的类中调用this.test()函数?
我猜我可以使用eval()函数,但这不起作用?
如何仅使用javascript中的字符串名称调用类函数?
答案 0 :(得分:1)
使用括号表示法。
this["test"](/* args */);
或
name = "test";
this[name](/* args */);
答案 1 :(得分:1)
要将函数作为普通函数调用而不将对象作为上下文,只需获取对它的引用并调用它。例如:
var name = "test";
var f = obj[name];
f(1, 2);
要将其作为对象的方法调用,请获取对该函数的引用,然后使用call
方法调用它来设置上下文。例如:
var name = "test";
var f = obj[name];
f.call(obj, 1, 2);
如果您在对象的方法内,则可以使用this
而不是我上面使用的对象引用obj
。
答案 2 :(得分:0)
为了让您的代码更安全,我建议您检查它是否为函数。
var a='functionName'
if (typeof this[a]!='function')
alert('This is not a function')
else
this[a]()