Lieber Reinhard,
private Eigenschaften und/oder Methoden kenne ich in JavaScript nur über das revealing pattern:
function MyConstructor (param) {
var priv = param;
this.setPriv = function (val) {
priv = val;
};
this.getPriv = function () {
return priv;
};
function privateAlert (txt) {
alert(txt);
}
this.checkError = function () {
if (!priv) {
privateAlert("priv is empty!");
}
};
}
const myObj = new MyConstructor(false);
myObj.checkError(); // "priv is empty!"
alert(myObj.priv); // undefined (nicht false!)
myObj.privateAlert("Hallo Welt!"); // TypeError: myObj.privateAlert is not a function
Sowohl die Variable priv
, als auch die Funktion/Methode privateAlert
können nicht über myObj.priv
bzw. myObj.privateAlert
adressiert werden. Sie sind durch Ausnutzung des Scope quasi private Eigenschaft bzw. Methode.
Liebe Grüße,
Felix Riesterer.