Definir o campo Privado Membros e Herança no padrão do módulo JAVASCRIPT
Eu posso definir campos de membros privados no padrão de módulo usando o código abaixo
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();
Este método funciona muito bem, mas o problema com este problema é que sempre que eu crio um novo objeto a cópia de todas as funções é criada e carregada na memória (não como java onde todos os objetos da mesma classe compartilham a mesma memória de função)
Eu tentei usar outro método abaixo:
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();
Mas o problema com este método é que, obviamente, obj1, obj2 compartilham a mesma cópia de campos privados (então, efetivamente, eles são estáticos). Então, existe uma maneira de definir campos privados no padrão de módulo ao usar a mesma cópia de funções para os objetos?
E para herança do primeiro método mencionado acima, primeiro preciso criar um objeto dentro da classe filho e depois retornar esse objeto.
var ChildClass = function(){
var childobj = myClass();
//override or add functions to childobj
return childobj ;
}
Mas isso é efetivamente apenas envolvendo o objeto de baseClass em childClass, Existe alguma outra maneira de implementar o mesmo (para primeiro ou segundo método) para que ele possa agir como uma verdadeira herança java com métodos protegidos, privados, etc?