[英]problem calling namespaced function from javascript function in another js file
Namespacing对我来说是JS中的新事物-我的项目已经变得非常复杂,是时候驯服野兽了:-P
我已经使用模块模式在foo.js中创建了名称空间foo。
var foo = (function () {
update: function () {
alert('z');
}
};
}());
我可以在带有$(function () {foo.update(); });
的html页面上的文档就绪函数中调用foo.update $(function () {foo.update(); });
但是我似乎无法使其从另一个js文件中调用。
我正在尝试从bar.js调用它
function updateTheFoo() {
foo.update();
}
实际用例要复杂得多,因为我正在动态创建的jQueryUI对话框中使用它,该按钮带有动态传递代码的可变按钮-但这很容易...
我敢肯定这很简单-但我似乎找不到答案。
非常感谢!
您的函数应编写如下:
var foo = (function () {
return {
update: function () {
alert('z');
}
};
}());
正如Matt所说,您的问题是缺少返回声明。 您正在使用的模块模式比命名空间更进一步,该模式允许在命名空间中同时具有名称空间和私有变量/函数,并仅通过return语句公开您想要的内容。
您可以在YUI博客上的这篇文章中了解有关模块模式的更多信息。
您已经使函数可以自动运行,但是另一方面,您尝试调用它。
如果要手动调用该函数,应采用以下方式:
var foo = foo ||
{
update: function () {
alert('z');
}
};
foo.update();
您还可以编写:
var foo = foo || {};
foo.update = function() { alert('z'); };
foo.update();
// or pass a variable
foo.update2 = function(text) { alert(text); };
foo.update2('z');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.