模块

在js 中 写类怎么写。 以前一般是这样

var Calculator = function(eq) { this._eqCtl = document.getElementById(eq);  }
        Calculator.prototype = {
            _eqCtl: null,
            add: function (x, y) { }
}

//这样调用就ok了
var o = new Calculator("a");

但是他有一个问题
o._eqCtl = null;

理论上 _eqCtl是私有变量。 但是外部却能够调用。
虽然说 加前缀 能解决。 但是总不是那么美好

ok 看到了下面这种写法.

var Calculator = function (eq) {
    var eqCtl = document.getElementById(eq);
    return {
        // 暴露公开的成员
        add: function (x, y) {   }
    };
};

var o = new Calculator("a"); //一样的调用
o.eqCtl //却不行~


这中是需要实例化的。 换JSON
var blogModule = (function () {
var 公开= {}, 私有变量= "私有";

function 私有方法(data) {
}

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

return 公开;
} ());

 

 很多时候多人开发。 所以要分离文件 而上面提到的却都是写在一个文件里. 简单说把 自身传进去便是

var blogModule = (function (my) {
            my.C = "aaa";
            return my;
        } (blogModule));
//接上面的方法 //你会发现 blogModule.C

 

 

这样就会有重载一说

var blogModule = (function (my) {
    var oldAddPhoto= my.AddPhoto;
    my.AddPhoto = function () {          };
    return my;
} (blogModule));

 

 

 

PS:深入理解JavaScript系列(3):全面解析Module模式


正在跟着这位高端屌丝学习。 你也可以直接看他的文章.写的真心赞。

这里算是我的学习笔记 不看也罢

posted @ 2012-04-27 22:35  CallMeTommy  阅读(146)  评论(0编辑  收藏  举报