我希望能够通过名称将对任意函数的引用传递给另一个javascript函数.如果它只是一个全局函数,则没有问题:
function runFunction(funcName) {
window[funcName]();
}
Run Code Online (Sandbox Code Playgroud)
但是假设函数可以是任意对象的成员,例如:
object.property.somefunction = function() {
//
}
Run Code Online (Sandbox Code Playgroud)
runFunction("object.property.somefunction")不起作用.我知道我可以这样做:
window["object"]["property"]["somefunction"]()
因此,虽然可以编写代码来解析字符串并以这种方式找出heirarchy,这似乎工作:)所以我想知道是否有更好的方法来解决这个问题,除了使用 eval()
您可以调用funcName.split('.')并遍历生成的数组,如下所示:
function runFunction(funcName) {
var parts = funcName.split('.');
var obj = window;
for (var i = 0; i < parts.length; i++)
obj = obj[parts[i]];
return obj();
}
Run Code Online (Sandbox Code Playgroud)