2009-01-26 57 views
2

我的JavaScript被包含在脚本标记多次,像这样:成语的Javascript代码结构

<script src="code.js></script> 
<script src="code.js></script> 
<script src="code.js></script> 

现在我有这样的代码里面code.js,使我的代码只运行一次,而不会覆盖我的命名空间:

if(typeof _ow == "undefined"){ 
_ow = {}; 
// code in here will only run once 

_ow.Auth = (function(){ 
})(); 
_ow.Template = (function(){ 
})(); 

} 

有没有更好的结构可以让我的代码只运行一次?

+0

嗯...为什么你的code.js包含多次? – cletus 2009-01-26 01:29:47

+0

诚实,你拥有*是JavaScript的成语。这也是最可读的方式。不需要太聪明。 – Zach 2009-01-26 02:29:40

回答

2
var _ow = _ow || { Auth: ... }; 

如果它已经定义,那么它将不会被再次定义。

+0

是的,我正在做类似的事情,但后来我需要为我所有的“功能”这样做,比如_ow.Auth = _ow.Auth || (功能(){})();这不是很好。 – 2009-01-26 01:23:40

1

当你正在做的事情会在技术上的工作,这是低效的,因为即使你的代码只被运行一次,但它最终会被在某些浏览器上解析了很多次(这与通过网络下载文件不同,并且不能被缓存)。

最好确保脚本只包含一次。对于所有重复的功能,您可以在需要时公开要调用的函数。