假设回调是您的 successCallback 对象,执行 window[callback] === 'function' 只会检查窗口对象的根目录是否有一个名为'$.Namespace.SomeFunction '的对象。但是您要实现的是检查 $ 对象中包含的对象 Namespace 本身是否有一个名为 SomeFunction 的对象。
为此,如果您已经知道命名空间和函数,您可以使用@rps 写的又名 typeof typeof myNamespace.myFunc,或者使用下面的函数来遍历对象并查找给定路径,在您的情况下为 $.Namespace。一些功能:
var get = function (model, path, def) {
path = path || '';
model = model || {};
def = typeof def === 'undefined' ? '' : def;
var parts = path.split('.');
if (parts.length > 1 && typeof model[parts[0]] === 'object') {
return get(model[parts[0]], parts.splice(1).join('.'), def);
} else {
return model[parts[0]] || def;
}
}
现在做类似的事情
typeof get(window, '$.Namespace.SomeFunction', 'undefined') === 'function'