Javascript 如何检查命名空间函数是否存在?
有没有办法确定命名空间中是否存在函数?我试图获取HTML元素的属性值,然后检查字符串值是否具有相应的JavaScript函数Javascript 如何检查命名空间函数是否存在?,javascript,namespaces,javascript-namespaces,Javascript,Namespaces,Javascript Namespaces,有没有办法确定命名空间中是否存在函数?我试图获取HTML元素的属性值,然后检查字符串值是否具有相应的JavaScript函数 <a id="myLink" href="http://stackoverflow.com/" data-success-callback="$.Namespace.SomeFunction" /> var successCallback = $('#myLink').data('success-callback'); var successCallba
<a id="myLink" href="http://stackoverflow.com/" data-success-callback="$.Namespace.SomeFunction" />
var successCallback = $('#myLink').data('success-callback');
var successCallback=$('#myLink')。数据('success-callback');
我知道我可以使用typeof window[callback]==“function”检查全局声明的函数,但这似乎不适用于命名空间中的函数;没有定义
有办法解决这个问题吗
谢谢:)假设callback是成功的callback对象,则执行window[callback]=='function'只会检查window对象的根目录下是否有名为“$.Namespace.SomeFunction”的对象。但是您想要实现的是检查$object中包含的对象名称空间本身是否有一个名为SomeFunction的对象 为此,如果您已经知道名称空间和函数,则可以使用@rps编写的名称,即typeof typeof myNamespace.myFunc,或者使用下面的函数来遍历对象并查找给定路径,在您的示例中为$.namespace.SomeFunction:
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'
假设callback是您的successCallback对象,则执行window[callback]==='function'只会检查window对象的根目录下是否有名为'$.Namespace.SomeFunction的对象。但是您想要实现的是检查$object中包含的对象名称空间本身是否有一个名为SomeFunction的对象 为此,如果您已经知道名称空间和函数,则可以使用@rps编写的名称,即typeof typeof myNamespace.myFunc,或者使用下面的函数来遍历对象并查找给定路径,在您的示例中为$.namespace.SomeFunction:
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'
我用了这个:
function getProperty(objName) {
var parts = objName.split('.');
for (var i = 0, length = parts.length, obj = window; i < length; ++i) {
obj = obj[parts[i]];
}
return obj;
}
函数getProperty(objName){
var parts=objName.split('.');
对于(变量i=0,长度=parts.length,obj=window;i
在这里找到了:我用了这个:
function getProperty(objName) {
var parts = objName.split('.');
for (var i = 0, length = parts.length, obj = window; i < length; ++i) {
obj = obj[parts[i]];
}
return obj;
}
函数getProperty(objName){
var parts=objName.split('.');
对于(变量i=0,长度=parts.length,obj=window;i
在这里找到它:其中
回调
是成功回调
?仅供参考,它应该是.data('successCallback')
。myNamespace的类型可能重复。myFunc
其中回调
是成功回调
?仅供参考,它应该是.data('successCallback'))
。myNamespace.myFunc的类型可能重复!为什么只返回jQuery名称空间?嗨!为什么只返回jQuery名称空间?