在 js 中命名空间对我来说是新的 - 我的项目变得非常复杂,所以是时候驯服野兽了:-P
我使用模块模式在 foo.js 中创建了一个命名空间 foo。
var foo = (function () {
update: function () {
alert('z');
}
};
}());
我可以使用 $(function () {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/