避免全局变量污染的解决办法

全局变量(可维护性)A.
定义一个全局变量的命名空间
为了避免全局变量的污染,尽可能创建一个全局变量。让其他对象和函数存在其中。

var myInfo={
    name:'chengxi',
    like:'football',
    likeDo:function(){
        alert(this.like);
    }
}

用上面的方式代替下面的方式 name与likeDo相当于两个全局变量

var name='chengxi';
function likeDo(){
    alert(name)
}

如果有更多的方法和功能也可以一并加入进去,而且系统化命名

var hengYue={};
//为util创建命名空间proJs
hengYue.proJs={};
//将用到的对象添加上去
hengYue.proJs.eventUtil={
    Dom:'处理dom的方法'event:'与事件交互的方法'
    };
//为util创建命名空间proAjax
hengYue.proAjax={};
//将用到的对象添加上去
hengYue.proAjax.eventUtil={
    Dom:'处理dom的方法'event:'与事件交互的方法'
    };

全局变量(可维护性)B.
利用匿名函数

(function(){
    var exp = {};
    var name = 'jack';
    exp.method = function(){
        return name;
    }
    window.ex = exp;
})()

全局变量(可维护性)C.

(function(obj){
    var count = {};
    var interim;

    count.name = 'jack';
    count.method = function(){
        console.log('内部方法');
    } 

    //把count对象挂到obj下
    obj.count = count
})(window)

//如果在这里调用window.name是可以获取到jack的值。


//下面window.name 是获取不到jack的值
(function(){
    var count = {};
    var interim;

    count.name = 'jack';
    count.method = function(){
        console.log('内部方法');
    } 
})()

全局变量(可维护性)D.

var NameSpace = window.NameSpace || {};
NameSpace.Hello = new function() {
  var self = this;
  var name = 'world';
  self.sayHello = function(_name) {
    return 'Hello ' + (_name || name);
  };
};

你可能感兴趣的:(javaScript)