2011-03-11 103 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