2

我的 javascript 多次包含在 script 标签中,如下所示:

<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(){
})();

}

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

4

3 回答 3

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

如果它已经定义,则不会再次定义。

于 2009-01-26T01:22:06.790 回答
1

您熟悉 Crockford 的Javascript 模块模式吗?

关于如何防止覆盖命名空间的轻微变化:

var _ow;
if(!_ow) _ow = {};
于 2009-01-26T02:58:28.187 回答
1

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

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

于 2009-01-26T04:18:40.800 回答