Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何检查命名空间函数是否存在?_Javascript_Namespaces_Javascript Namespaces - Fatal编程技术网

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

有没有办法确定命名空间中是否存在函数?我试图获取HTML元素的属性值,然后检查字符串值是否具有相应的JavaScript函数

<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名称空间?