2

次のように、私の JavaScript は script タグに複数回含まれます。

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

現在、このコードをcode.js内に配置して、名前空間を上書きせずにコードを 1 回だけ実行できるようにしています。

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 Module Patternに精通していますか?

名前空間の上書きを防ぐ方法のわずかなバリエーション:

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

あなたがしていることは技術的には機能しますが、非効率的です。コードが 1 回しか実行されなくても、一部のブラウザーでは何度も解析されることになるためです (これは、ネットワーク経由でファイルをダウンロードすることとは異なり、キャッシュされます)。

スクリプトが 1 回だけ含まれるようにすることをお勧めします。繰り返されるすべての機能について、必要なときに呼び出される関数を公開できます。

于 2009-01-26T04:18:40.800 に答える