2011-03-11 96 views
7

我的jquery代碼被分割的文件被分割成2個文件。共享2個文件中的代碼之間的js函數

在該文件中的一個,我定義一個函數

function something(input){ 
    //does something 
} 

調用這個函數,只有當主叫用戶線是在同一個文件工作。但我需要從兩個文件中調用它。

如果我將函數切換到第二個文件,我再次遇到同樣的問題。同一個文件中的代碼可以讀取它,但不能讀取其他文件中的代碼。

回答

9

廣場$(document).ready(function() { });以外的功能給他們的全球範圍。放在其中的任何東西都不能從外部訪問。

然後,您可以使用名稱空間來封裝您的函數。這有助於避免全局名稱空間的混亂。

4

您需要創建一個命名空間對象,它在您的文件之間共享。

fileA.js

window.mynamespace = window.mynamespace || {}; 

mynamespace.something = function(input) { 
    // do something 
}; 

fileB.js

window.mynamespace = window.mynamespace || {}; 

mynamespace.something(); 
+0

我正在使用JQuery,我的每個文件都是這樣開始的。我在哪裏放命名空間?文件準備好了嗎? '$(document).ready(function(){ \t });' – sami 2011-03-11 10:29:07

+0

@sami:設置或接收該對象應該是每個文件中發生的第一件事。另外,這是一個簡化版本。您可以爲此問題創建更復雜的解決方案。 – jAndy 2011-03-11 10:33:49

+0

我同意這是最好的解決方案。在JavaScript中有一些帶有導出/導入的實驗([see this page](http://hatayservices.com/books/Javascript/JavaScriptStatements.html#stmtexport)),但是在全局對象(如窗口)上保存了themethods/object,是最好的方式... – Tokimon 2011-03-11 12:09:20