Module模式总结

基本特征

1.模块化,可重用
2.封装了变量和function,和全局的namaspace不接触,松耦合
3.只暴露可用public的方法,其它私有方法全部隐藏

匿名闭包
(function () {
    // ... 所有的变量和function都在这里声明,并且作用域也只能在这个匿名闭包里
    // ...但是这里的代码依然可以访问外部全局的对象
}());
引用全局变量
(function ($, YAHOO) {
    // 这里,我们的代码就可以使用全局的jQuery对象了,YAHOO也是一样
} (jQuery, YAHOO));
基本的module模式
var blogModule = (function () {
    var my = {}, privateName = "pray-lee";

    function privateAddTopic(data) {
        // 这里是内部处理代码
    }

    my.Name = privateName;
    my.AddTopic = function (data) {
        privateAddTopic(data);
    };

    return my;
} ());
module模式的拓展

Module模式的一个限制就是所有的代码都要写在一个文件,如果想增加拓展方法和属性,可以把自己传进去

var blogModule = (function (my) {
    my.AddPhoto = function () {
        //添加内部代码  
    };
    return my;
} (blogModule)); 
松耦合拓展
var blogModule = (function (my) {

    // 添加一些功能   
    
    return my;
} (blogModule || {}));  
紧耦合拓展 (可以进行函数重载,把原先的赋值给一个新变量,进而重写自己)
var blogModule = (function (my) {
    var oldAddPhotoMethod = my.AddPhoto;

    my.AddPhoto = function () {
        // 重载方法,依然可通过oldAddPhotoMethod调用旧的方法
    };

    return my;
} (blogModule));
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容