我有以下情景
然后我有检查以下条件的功能:
var callback = $input.data('callback');
if(callback){
// I want to do something like this:
window[callback].call(this);
}
但由于命名空间,我无法做到这一点。这种情况的最佳做法是什么?
答案 0 :(得分:2)
在"."
上拆分,解析以窗口开头的每个细分,然后使用()
调用:
foo = {
bar: {
baz: function() {
console.log("foo.bar.baz()");
}
}
};
"foo.bar.baz".split(".").reduce((o, n) => o[n], window)();
答案 1 :(得分:0)
window.foo = {
bar: function () {
alert(this.val);
},
val: "foobar!"
}
var callback = "foo.bar";
if (callback) {
var segments = callback.split('.'),
context = window;
for (var i = 0; i < segments.length-1; i++) {
context = context[segments[i]];
}
context[segments[i]]();
}