要解決命名衝突,即必須保證,本模塊的變量不會被其餘模塊污染,爲了保證命名空間的整潔,但願可以在全局把這些變量用一種規範的方式組織起來。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();