降低全局变量带来的命名污染

1 对象字面量
var namespace = {
    a: function() {
        alert(1);
    },
    b: function() {
        alert(2);
    }
};
2 动态创建命名空间
var MyApp= {};
MyApp.namespace = function(name) {
    var parts = name.split('.');
    var current = MyApp;
    for(var i in parts) {
        if(!current[parts[i]]) {
            current[parts[i]] = {};
        }
        current = current[parts[i]];
    }
}
MyApp.namespace('event');
MyApp.namespace('dom.style');

//等价于:
var MyApp = {
    event: {},
    dom: {
        style: {}
    }
};
3. 使用闭包装私有变量
var user = (function(){
    var _name = 'ss',
        _age = '20';
    return{
        getUserInfo: function() {
            return _name + '-' + _age;
        }
    }
})();

因为_name和_age被封装在闭包产生的作用域中,外部是无法访问这两个变量的,这就避免了全局命令污染。

你可能感兴趣的:(降低全局变量带来的命名污染)