如何将String转换为javascript函数调用(带对象的情况)

zer*_*kms 3 javascript

是的,有很多问题,例如如何将字符串转换为javascript函数调用?或者当我将其名称作为字符串时如何执行JavaScript函数.

但是,如果我们没有普通的函数名称,而是实际上是函数的对象属性名称呢?

喜欢:

var callMe = 'foo.bar.baz';
Run Code Online (Sandbox Code Playgroud)

和期望被调用的代码是:

window.foo = {
    bar: {
        baz: function() {
            alert('Eureka!');
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

为什么我需要这个:回调参数通过url传递,它可以(通过应用程序设计)是函数名或对象属性的FQN.

除了以外的任何想法eval()

UPD:

我最后的实施:

var parts = callbackName.split('.'),
    callback;

for (i in parts) {
    if (!callback) {
        callback = window[parts[i]];
    } else {
        callback = callback[parts[i]];
    }

    if (typeof callback === 'undefined') break;
}

if (typeof callback === 'function') {
    callback();
} else {
    console.error('Passed callback is not a valid function');
}
Run Code Online (Sandbox Code Playgroud)

Ita*_*vka 5

尝试

window['foo']['bar']['baz']()
Run Code Online (Sandbox Code Playgroud)

如果这适合你,应该很容易转化'foo.bar.baz'为.

  • 你可以随时联系一个福尔摩斯的故事,苏格兰场在那里看房子里找不到信.他们带来福尔摩斯,他在研究中走到桌边,挑了一个躺在它上面的信封.那封信...... (2认同)