JavaScript 合作开发

var GLOBAL = {};
// 'str' : 'GLOBAL.A'、'A'、'A.str1'
GLOBAL.namespace = function(str) {
  // split 字符串分割为数组
  var arr = str.split('.');
  var o = GLOBAL;
  var start = 0;
  // 判断数组内的第一个元素是否为GLOBAL;
    // 如果是,下方的for循环从第二个数组元素开始获取,否则,从头开始
  if (arr[0] == 'GLOBAL') {
      start = 1;
  } esle {
      start = 0;
  }
  // o = o[arr[i]] 的作用: 如果arr的长度大于等于2,为了形成嵌套的层级关系,将o始终等于上一级对象; 如此,o[arr[i]]就会始终为上一级对象添加子对象。
  // || {}的作用: 判断该属性在该层级是否存在,如果存在,值不变,反之,将一个对象付给该值
  for (var i = start; i < arr.length; i++) {
      o[arr[i]] = o[arr[i]] || {};
      o = o[arr[i]];
  }
};

/*
  @method 功能A:实现加法运算
  @author 工程师甲
  @connect 1234567
  @time 2015-01-01
*/
(function() {
  var a = 1,b = 2;
  GLOBAL.namespace('A.CAT');
  GLOBAL.namespace('A.DOG');
  GLOBAL.A.CAT.name = 'mimi';
  GLOBAL.A.DOG.name = 'xiaobai';
  GLOBAL.A.CAT.move = function() {};
  GLOBAL.A.str1 = a;
  GLOBAL.A.str = b;
})();
/*
  @method 功能B:实现加法运算
  @author 工程师乙
  @connect 1234567
  @time 2015-01-01
*/
(function() {
  var a = 2;
  var b = 1;
  GLOBAL.namespace('B');
  GLOBAL.B.str1 = a;
  alert(a-b); //1
})();
/*
  @method 功能C:实现加法运算
  @author 工程师丙
  @connect 1234567
  @time 2015-01-01
*/
(function() {
  var a = GLOBAL.A.str1;
  var b = GLOBAL.A.str;
  alert(a*b); //2
})();
/*
  @method 功能D:实现加法运算
  @author 工程师丁
  @connect 1234567
  @time 2015-01-01
*/
(function() {
  var a = GLOBAL.B.str1;
  alert(a*2); //4
})();

  合作开发中最容易出现变量混淆, 使用对象将所有变量存储起来是较为流传的方法, 但单纯的对象存储难以应对去全局变量众多的复杂操作,因此,根据不同功能命名全局变量的属性形成一个特殊的层级(全局变量的第一层级),根据第一层级属性名划分不同功能的变量,以函数方法来承载繁琐的命名(简化代码),以注释增强代码的可维护性。

 截选至 小火柴的蓝色理想 , 如有侵权,请留言,会立即删除。

猜你喜欢

转载自www.cnblogs.com/wssjzw/p/9356314.html
今日推荐