我希望能够通过名称将对任意函数的引用传递给另一个 javascript 函数。如果只是一个全局函数,没有问题:
function runFunction(funcName) {
window[funcName]();
}
但假设该函数可以是任意对象的成员,例如:
object.property.somefunction = function() {
//
}
runFunction("object.property.somefunction")
不起作用。我知道我可以这样做:
window["object"]["property"]["somefunction"]()
因此,虽然可以编写代码来解析字符串并以这种方式找出层次结构,但这似乎可行:)所以我想知道除了使用之外是否还有更好的方法来解决这个问题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();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)