変数間の上書きと競合を避けるために、名前空間を生成できます。名前空間は特別な接頭辞で、JSの{}オブジェクトを介して実装されています。
異なる匿名関数では、関数に従って異なる名前空間が宣言されます。各匿名関数のグローバルオブジェクトのプロパティは、グローバルに直接掛けられていませんが、次のようなサブアノニマス関数の名前空間に掛けられています。
コードコピーは次のとおりです。
<script type = "text/javascript">
var global = {}
</script>
<script type = "text/javascript">
(関数(){
var a = 123、a1 = 256;
Global.A = {}
Global.A.Str = a;
})();
</script>
<script type = "text/javascript">
(関数(){
var b1 = 123、b2 = 256;
global.b = {}
Global.B.Str = a;
})();
</script>
同じ匿名関数のプログラムが非常に複雑で、多くの変数名を持っている場合、名前空間をさらに拡張してセカンダリネームスペースを生成できます。
コードコピーは次のとおりです。
<script type = "text/javascript">
var global = {}
</script>
<script type = "text/javascript">
(関数(){
var a = 123、a1 = 256;
Global.a = {};
Global.a.cat = {};
Global.a.dog = {};
Global.a.cat.name = "mini";
Global.a.cat.move = function(){
}
Global.a.dog.name = "mini";
Global.a.dog.move = function(){
}
})();
</script>
名前空間を生成することは非常に一般的な関数であるため、次のように、名前空間を生成する機能はさらに簡単に呼び出す関数として定義できます。
コードコピーは次のとおりです。
<script type = "text/javascript">
var global = {}
Global.namespace = function(str){
var arr = str.split( "。")、o = global;
for(i = arr [0] == "global"?1:0; i <arr.length; i ++){
o [arr [i]] = o [arr [i]] || {};
o = o [arr [i]];
}
}
</script>
名前空間固有の操作を呼び出す:
コードコピーは次のとおりです。
<script type = "text/javascript">
// ==============================================================================
//関数a
//エンジニアa
//メール:[email protected] msn:[email protected] "
// 2012-11-06
// ==============================================================================
(関数(){
var a = 123、a1 = "hello world";
global.namespace( "a.cat");
global.namespace( "a.dog");
Global.a.cat.name = "mini";
Global.a.cat.move = function(){
}
Global.a.dog.name = "mini";
Global.a.dog.move = function(){
}
Global.A.Str = a;
Global.A.Str1 = A1;
})();
同様に、複数の人との直接的なチーム開発であろうと、個人との間接的なチームワークであろうと、良好な保守性が必要です。
1.必要なコードコメントを追加します
2. JSが矛盾しないようにし、グローバル変数の拡散を避け、名前空間を合理的に使用する