// https://wiki.selfhtml.org/wiki/JavaScript/Module_und_Kapselung
// Klasse / Modul definieren
// Grundmodul
let oModule = (function() {
// private
let priv1 = 100;
let priv2 = 200;
function priv_func1(var1, var2) {
return var1 + var2 + priv1;
}
function priv_func2(var1, var2) {
return var1 + var2 + priv2;
}
// public
return {
public_func1: function(var1, var2) {
return priv_func1(var1, var2) + priv_func2(var1, var2);
}
};
})();
// Erweiterung des Grundmoduls um public und private Methoden
(function (module) {
// private
let priv3 = 200;
function priv_func3(var1, var2) {
return var1 + var2 + priv3;
}
// public
module.public_func2 = function(var1, var2) {
return priv_func3(var1, var2);
};
})(oModule);
// ok -> 306
console.log(oModule.public_func1(1, 2));
// ok -> 203
console.log(oModule.public_func2(1, 2));
// undefined
console.log(oModule.priv1);
// undefined
console.log(oModule.priv3);
// "error"
console.log(oModule.priv_func1(1, 2));
// "error"
console.log(oModule.priv_func3(1, 2));