我们在写js代码的时候,常常会因为全局变量而产生冲突。为了避免全局变量的冲突问题,我们可以构造一个生成命名空间的函数。具体代码如下:
<script type="text/javascript">
var GLOBAL = {};
GLOBAT.namespace = function(str){
var arr = str.split('.'),o = GLOBAT;
for(i=(arr[0] == 'GLOBAT') ? 1 : 0; i<arr.length; i++){
o[arr[i]] = o[arr[i]] || {};
o = o[arr[i]];
}
}
</script>
<script type="text/javascript">
(function(){
GLOBAT.namespace('A.CAT');
GLOBAT.namespace('A.DOC');
GLOBAT.A.CAT.name = 'sisi';
GLOBAT.A.DOC.name = 'wangcai';
})();
</script>
其中要注意的是,o=GLOBAT; 就相当与给GLOBAL取了一个别名,对o添加属性的同时GLOBAT也跟着变化了。
所有Object对象都有这样的性质。