Javascript 命名空间模式

  然而,在不同的文件中给一个命名空间添加属性的时候,首先要保证这个命名空间是已经存在的,同时不对已有的命名空间造成任何破坏。可以通过非破坏性的命名空间函数实现:

  

复制代码 代码如下:

  var KUI = KUI || {};

  KUI.utils = KUI.utils || {};

  KUI.utils.namespace = function(ns){

  var parts = ns.split("."),

  object = KUI,

  i, len;

  if(parts[0] === "KUI"){

  parts = parts.slice(1);

  }

  for(i = 0, len = parts.length; i < len; i+=1){

  if(!object[parts[i]]){

  object[parts[i]] = {};

  }

  object = object[parts[i]];

  }

  return object;

  };

  用法:

  

复制代码 代码如下:

  KUI.utils.namespace("KUI.common");

  KUI.utils.namespace("KUI.common.testing");

  KUI.utils.namespace("KUI.modules.function.plugins");

  KUI.utils.namespace("format");

  看一下经过上述后KUI都有什么:

  

复制代码 代码如下:

  {

  "utils": {},

  "common": {

  "testing": {}

  },

  "modules": {

  "function": {

  "plugins": {}

  }

  },

  "format": {}

  }

  命名空间模式的缺点

  1.需要输入更长的字符,并且需要更长的解析时间;

  2.对单全局变量的依赖性,即任何代码都可以修改该全局实例,其他代码将获得修改后的实例。