要解决命名冲突,即必须保证,本模块的变量不会被其余模块污染,为了保证命名空间的整洁,但愿可以在全局把这些变量用一种规范的方式组织起来。java
在全局管理命名空间,能够把命名挂在在window这个全局对象上,来实现命名空间的整合和通讯。this
按照约定的命名规范,将本变量注册到全局spa
大型项目中,变量对象会出现多层级的结构,如:school.class.people,一层一层注册。prototype
var program={}; program.Namespace = { register: function(ns){ var nsParts = ns.split("."); var root = window; for (var i = 0; i < nsParts.length; i++) { if (typeof root[nsParts[i]] == "undefined") { root[nsParts[i]] = new Object(); } root = root[nsParts[i]]; } } };
以实例化一个对象为例code
program.Namespace.register("earth.China"); earth.China.Shanghai=function () { this.init(); } earth.China.Shanghai.prototype={ constructor:earth.China.Shanghai, init:function () { console.log('this is Shanghai'); } } new earth.China.Shanghai();