javascript之模块开发

   js代码越来越多,越来越臃肿,合作开发的时候经常出现全局变量冲突等等,遇到这些问题的时候应该考虑js的模块开发了,下面简单介绍一下所谓模块开发的基础。

   1、说到模块开发就不得不提立即执行函数,什么是立即执行函数呢,请看下面的示例:

/**
 * 立即执行函数常用有两种方式调用
 * (function(){}());
 * (function(){})();
 */
(function() {
    alert(1);
})();

2、这有什么好处呢,当然就是防止全局污染了,也就是函数里面声明的变量不会被外部访问,例如:

var module = (function() {
    var module = {};
    //私有属性
    var user = '村长';
    function _private() {
        alert('私有方法');
        //私有方法
    }
    module.name = user+'123';
    module.pubFn = function() {
        _private();
        return '公共方法';
    };
    return module;
}());
alert(module.user); //undefined
alert(module.name); //村长123
alert(module.pubFn()); //私有方法、公共方法

3、如何导入全局变量呢,这个有办法,请看:

var module = (function($) {
    $.id = 1;
}(window));
alert(id); //1

4、扩展模块

var module = (function($) {
    $.extend = function() {
        alert('extend');
    }
                         
    return $;
}(module || {})); //松散扩展,及时之前没有声明module,也会把'{}'当作对象传进去
module.extend(); //extend

5、防止模块覆盖

(function($) {
    $.extend = function() {
        alert('extend');
    }
}(window.module = window.module || {}));


6、子模块

var module = (function($) {
    $.extend = function() {
        alert('extend');
    }
                    
    return $;
}(module || {}));
//子模块
module.child = (function() {
    var c = {};
    c.name = '村长';
    c.fn = function() {
        console.log(this.name);
    }
    return c;
})();
module.child.fn();


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章