Module模式总结

2018-08-28  本文已影响0人  praycis
基本特征

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));
上一篇下一篇

猜你喜欢

热点阅读