Decorations - Satttoshi/github-wiki-generator GitHub Wiki
Dekorationen sind ein Konzept in der JavaScript-Programmierung, das es ermöglicht, den Code eines Objekts durch Verwendung von Dekoratoren zu erweitern oder zu modifizieren. Dekoratoren sind Funktionen, die auf Klassen, Methoden oder Eigenschaften angewendet werden können, um ihr Verhalten zu ändern oder zusätzliche Funktionalitäten hinzuzufügen.
function readonly(target, property, descriptor) {
    descriptor.writable = false;
    return descriptor;
}
class Person {
    @readonly
    name = "Max";
    
    @readonly
    sayHello() {
        console.log(`Hello, my name is ${this.name}.`);
    }
}
const person = new Person();
person.name = "John"; // Ergebnis: TypeError: Cannot assign to read only property 'name' of object '#<Person>'
person.sayHello = function() { // Ergebnis: TypeError: Cannot assign to read only property 'sayHello' of object '#<Person>'
    console.log("Hello, nice to meet you.");
};
person.sayHello(); // Ergebnis: Hello, my name is Max.In diesem Beispiel wird der Dekorator readonly auf die Eigenschaft name und die Methode sayHello der Klasse Person angewendet. Der Dekorator ändert die Eigenschaft writable des Descriptors, um sie schreibgeschützt zu machen. Dadurch wird verhindert, dass der Wert der Eigenschaft geändert oder die Methode überschrieben werden kann.
Dekorationen bieten eine flexible Möglichkeit, den Code einer Klasse zu erweitern oder zu modifizieren, ohne ihn direkt zu ändern. Dadurch wird der Code sauber und modular gehalten und die Wiederverwendbarkeit verbessert. Zu den Vorteilen von Dekorationen gehören:
- Code-Erweiterung: Zusätzliche Funktionen können einem Objekt hinzugefügt werden, ohne den ursprünglichen Code zu ändern.
 - Zusätzliche Funktionalität: Dekorationen ermöglichen es, das Verhalten von Methoden oder Eigenschaften zu ändern oder zusätzliche Funktionen hinzuzufügen, wie z.B. Protokollierung oder Validierung.
 - Trennung von Zuständigkeiten: Durch die Verwendung von Dekorationen können unterschiedliche Aspekte des Codes separiert werden, was die Lesbarkeit und Wartbarkeit verbessert.
 
Dekorationen sind ein leistungsfähiges Werkzeug in der JavaScript-Programmierung, um den Code flexibler, modifizierbarer und erweiterbarer zu machen.