[英]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.