代码结构的Javascript习惯用法

时间:2009-01-26 01:17:44

标签: javascript idioms

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

}

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

3 个答案:

答案 0 :(得分:2)

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

如果已定义,则不再定义。

答案 1 :(得分:1)

你熟悉Crockford的Javascript Module Pattern吗?

如何防止覆盖名称空间的细微变化:

var _ow;
if(!_ow) _ow = {};

答案 2 :(得分:1)

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

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