Определите Члены частного поля и Наследование в шаблоне модуля JAVASCRIPT
Я могу определить частные поля члена в шаблоне модуля, используя код ниже
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 ;
}
Но это фактически просто обертывание объекта baseClass в childClass. Есть ли какой-то другой способ реализовать то же самое (для 1-го или 2-го метода), чтобы он мог действовать как истинное наследование Java с защищенными, частными и т. Д. Методами?