我可以使用下面的代码定义在模块图案私有成员字段
var myClass = function(){
var private_field1,private_field_2;
var private_func1 = function(){
//.......
}
//.........
var myObj = {
global_field1:2,
global_field2:"something",
global_func: function(){//......}
}
return myObj;
};
var obj = myClass();
此方法效果不错,但这个问题的问题是,每当我创建一个新的对象被创建并加载到内存中的所有功能副本(不象Java其中同一类份额相同功能的存储器中的所有对象)
我试着用下面的另一种方法:
var myClass = (function(){
var private_field1,private_field_2;//private static fields
var private_func1 = function(){
//.......
}
//.........
var Constr = function(){
//do something
}
Constr.prototype = {
//................
global_func: function(){//......}
}
return Constr;
}());
var obj1 = new myClass();
var obj2 = new myClass();
但是,使用这种方法的问题是明显OBJ1,私人领域的obj2的份额相同的副本(所以有效它们是静态的)。 那么,有没有一种方式,同时使用的功能相同的副本的对象定义模块模式私有字段?
并继承了上述第一种方法,我首先需要创建子类中的对象,然后返回该对象。
var ChildClass = function(){
var childobj = myClass();
//override or add functions to childobj
return childobj ;
}
但是,这只是有效的包装基类的childClass对象,是否有实现相同(为第一或第二的方法),以便它可以像与保护,私有等方法真正Java继承一些其他的方式?