按名称调用作为对象成员的 javascript 函数

2024-04-30

我希望能够通过名称将对任意函数的引用传递给另一个 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(使用前将#替换为@)

按名称调用作为对象成员的 javascript 函数 的相关文章

随机推荐