Felix Riesterer: Private Klassen-Eigenschaften

Beitrag lesen

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.