Чтобы избежать перезагрузки и конфликтов между переменными, может быть сгенерировано пространство имен. Пространство имен является специальным префиксом, который реализован через {} объектов в JS.
В разных анонимных функциях другое пространство имен объявляется в соответствии с функцией. Свойства глобального объекта в каждой анонимной функции не подвешены напрямую на глобальном уровне, но висели в пространстве имен субононимных функций, такие как:
Кода -копия выглядит следующим образом:
<script type = "text/javascript">
var global = {}
</script>
<script type = "text/javascript">
(function () {
var a = 123, a1 = 256;
Global.a = {}
Global.a.str = a;
}) ();
</script>
<script type = "text/javascript">
(function () {
var b1 = 123, b2 = 256;
Global.b = {}
Global.b.str = a;
}) ();
</script>
Если программа в той же анонимной функции очень сложна и имеет много имен переменных, пространство имен может быть дополнительно расширено для создания вторичного пространства имен:
Кода -копия выглядит следующим образом:
<script type = "text/javascript">
var global = {}
</script>
<script type = "text/javascript">
(function () {
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">
// ===================================================================
// функция а
// Инженер а
// электронная почта: [email protected] msn: [email protected] "
// 2012-11-06
// ===================================================================
(function () {
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 от конфликта, избегайте распространения глобальных переменных и разумно используйте пространство имен