javascript - 从另一个js文件中的javascript函数调用命名空间函数的问题

标签 javascript namespaces

在 js 中命名空间对我来说是新的 - 我的项目变得非常复杂,所以是时候驯服野兽了:-P

我使用模块模式在 foo.js 中创建了一个命名空间 foo。

var foo = (function () {       
        update: function () {
            alert('z');
        }
    };
}());

我可以使用 $(function () {foo.update(); });

在 html 页面上的文档就绪函数中调用 foo.update

但我似乎无法让它从另一个 js 文件触发调用。

我正在尝试从 bar.js 中调用它

function updateTheFoo() {
    foo.update();
}

实际用例要复杂得多,因为我在动态创建的 jQueryUI 对话框中使用它,其中包含动态传递代码的可变按钮 - 但这是简单的部分...

我确定这很简单 - 但我似乎找不到答案。

非常感谢!

最佳答案

你的函数应该这样写:

var foo = (function () {       
    return {
        update: function () {
            alert('z');
        }
    };
}());

正如 Matt 所说,您的问题是缺少返回语句。你正在使用的是一个模块模式,它比命名空间更进一步,它允许在该命名空间内同时拥有一个命名空间和私有(private)变量/函数,并且只使用 return 语句公开你想要的内容。
您可以在 this article on the YUI blog 中阅读有关模块模式的更多信息.

关于javascript - 从另一个js文件中的javascript函数调用命名空间函数的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5137371/

相关文章:

javascript - 如何通过函数传递对对象的引用?

c++ - 不相关的删除运算符改变了重载决议的行为

php - 无法传递字符串参数

javascript - 如何在 JavaScript 中先执行一个 Promise,然后再执行下一个语句

php - OAuth 2.0 服务器 PHP,找不到接口(interface)

.net - 如何在 .net 类库中的命名空间中拥有与另一个命名空间同名的类

c# - 命名空间语义差异

javascript - 有没有只支持严格模式的js环境?

javascript - 有没有一种方法可以使用 Material UI 组合两个图标,一个在另一个之上,作为表头中的 IconComponent

javascript - 我不明白以下javascript代码:的意义