我目前编码是这样的:我应该如何存储我的JavaScript变量?
<script type="text/javascript">
var linkObj;
这是存储数据的安全呢?我担心的是如果jQuery或其他插件也使用变量linkObj。另外如果我这样声明我的变量,那么它是否也可以通过位于其他包含的js文件中的脚本中的其他函数看到?
我目前编码是这样的:我应该如何存储我的JavaScript变量?
<script type="text/javascript">
var linkObj;
这是存储数据的安全呢?我担心的是如果jQuery或其他插件也使用变量linkObj。另外如果我这样声明我的变量,那么它是否也可以通过位于其他包含的js文件中的脚本中的其他函数看到?
$(document).ready(function(){
var linkObj;
});
只要您使用var
关键字,在该范围内定义的任何变量将不会对其他插件访问。
我以这种方式声明一个变量,它将被页面上运行的所有脚本访问。
如果你只是想在本地使用它,将它包装在一个函数:
(function() {var linkObj; ... })()
然而,这种方式什么功能之外将能够访问它。
如果你想明确地共享不同脚本之间的某些变量,你也可以使用一个对象作为命名空间:
var myProject = {}
myProject.linkObj = ...
这将最大限度地减少你有多少全局名称的依靠。
把它包在一个封闭:
<script type="text/javascript">
(function() {
var linkObj;
// Rest of your code
})();
</script>
这样外面自己没有脚本将有机会获得linkObj。
这是一种安全的数据存储方式吗?
这不是存储数据本身,它只是宣告在脚本块中的变量在什么我认为是一个HTML页面。将来重新加载页面时,它不会保留以前的值。
我担心的是,如果有什么的jQuery或其他插件是也使用变量linkObj。
这是一个有效的关注,像其他人指出。但是,您希望插件不要依赖插件外的作用域。这不应该影响很多,因为好的插件设计可能会阻止这种情况发生。
另外,如果我声明我的变量这样便可以把它也可以被其他功能设在其他js文件,我包括脚本见过?
是的。只要在您的脚本块加载后触发它们的执行。这通常遵循脚本声明在页面中出现的顺序。或者不管它们在页面上显示的顺序是否被执行,例如,在jQuery DOM'ready'事件之后。
这是经常听到说为好,避免“全局命名空间污染”,它涉及到这个问题。为了达到这个目的,你可以使用一个函数来包含代码,并直接在脚本块中调用该函数。
(function() {
var a = 1; // the scope is within the function
alert('The variable a is equal to: ' + a);
})(); // the parenthesis invoke the function immediately
如果我这样做,那么是否可以,如果多个脚本声明var myProject = {}?我问这是因为我不确定在哪里声明将被共享的vmyProject命名空间。谢谢。 – 2012-02-08 05:24:23
不,一个以上的脚本仍然可以声明'myProject'并搞乱你的绑定。但是,如果给它一个足够独特的名称(例如项目名称),则不应该有任何问题。如果你真的偏执,可以在分配名称之前检查名字是否被采用。 – 2012-02-08 05:25:40
对不起,我不清楚。我的意思是我自己的脚本不止一个。如果两个脚本都使用相同的命名空间,但我不确定哪个脚本运行会好吗? – 2012-02-08 05:30:47