是的,有很多问题,例如如何将字符串转换为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)
尝试
window['foo']['bar']['baz']()
Run Code Online (Sandbox Code Playgroud)
如果这适合你,应该很容易转化'foo.bar.baz'为.
| 归档时间: |
|
| 查看次数: |
427 次 |
| 最近记录: |