gpt4 book ai didi

javascript - 如何检查命名空间函数是否存在?

转载 作者:行者123 更新时间:2023-11-28 01:59:29 24 4
gpt4 key购买 nike

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

<a id="myLink" href="http://stackoverflow.com/" data-success-callback="$.Namespace.SomeFunction" />

var successCallback = $('#myLink').data('success-callback');

我知道我可以使用 typeof window[callback] === 'function' 来检查全局声明的函数,但这似乎不适用于命名空间中的函数;它是未定义的。

有办法解决这个问题吗?

谢谢:)

最佳答案

假设回调是您的 successCallback 对象,执行 window[callback] === 'function' 只会检查窗口对象的根目录中是否有一个名为 '$.Namespace.SomeFunction' 的对象。但是您想要实现的是检查 $ 对象中包含的对象命名空间本身中是否存在名为 SomeFunction 的对象。

为此,如果您已经知道 namespace 和函数,您可以使用 @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'

关于javascript - 如何检查命名空间函数是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18651977/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com