Contents
Module Pattern
Ziel:
– Objekt mit privaten Variablen erstellen
let person = (function () {
let name = 'Veronika'; //Private Objektvariable
return {
getName: function () { // Objekt-Methode 1
return name;
},
setName: function (myName){ // Objekt-Methode 2
name = myName;
}
};
})(); // Immediatly invoked function expression
person.name;
// undefined
person.getName();
// 'Veronika'
person.setName('Not Veronika');
person.getName;
// 'Not Veronika'
Das pattern beinhalted eine IIFE.
Ich empfinde das allerdings eher als Limitierung und erbringt bezüglich des Ziels (Objekt mit privater Variable erstellen) nichts.
Revealing Module Pattern
Das RMP unterscheidet sich zum MP nur diesbezüglich, dass das die public Funktionen nicht innerhalb des „return“-Blocks codert werden, sondern derselbige nur referenzen auf die Funktionen enthält:
let person = (function () {
let privateAge = 0;
let privateName = 'Andrew';
function privateAgeOneYear() {
privateAge += 1;
console.log(`One year has passed! Current age is ${privateAge}`);
}
function displayName() {
console.log(`Name: ${privateName}`);
}
function ageOneYear() {
privateAgeOneYear();
}
return {
name: displayName,
age: ageOneYear
};
})();