模块
在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模式
正在跟着这位高端屌丝学习。 你也可以直接看他的文章.写的真心赞。
这里算是我的学习笔记 不看也罢