Was bringt der Einsatz von Setter und Getter in JavaScript?
Kurz: Ich verstehe nicht, was der Einsatz von set und get mir in der Praxis bringt. Ich weiß, dass er was mit Zugriffseigenschaften zu tun hat, aber ich vermische das glaube ich mit der Datenkapselung und der Privatisierung der Eigenschaften und Methoden über # (oder auch nicht, ich bin verwirrt).
Folgendes Beispiel sei gegeben, was genau macht hier den Unterschied? Egal ob ich nun den Abschnitt mit set und get niederschreibe oder nicht, an den Ausgabebefehlen und Ergebnissen ändert sich nichts. Ich kann auch problemlos die einzelnen Werte der Objektinstanz "fish". Ich wäre froh, wenn mir das jemand (möglichst einfach) erklären könnte. Soll der Zugriff von außen verhindert werden? Aber dafür habe ich ja #.
//Gegeben sei Klasse Animal
class Animal {
_name = "";
_color = "";
_age = "";
constructor(name, color, age) {
this._name = name ? name : this._name;
this._color = color ? color : this._color;
this._age = age ? age : this._age;
}
//Getter und Setter
get name() {
return this._name;
}
set name(name) {
this._name = name;
}
get color() {
return this._color;
}
set color(color) {
this._color = color;
}
get age() {
return this._age;
}
set age(age) {
this._age = age;
}
//Ein paar Methoden
eat(food) {
console.log(`Mhh, ${food}`);
}
drink(drink) {
console.log(`Schlürf, ${drink}`);
}
toString() {
return `${this.name}, ${this.color}, ${this.age}`;
}
}
//Erzeugung neuer Objektinstanz
const fish = new Animal("Fischi", "Grün", 2);
console.log(fish.name); //Ausgabe Fischi
fish.name = "Flipper"; //Neue Wertzuweisung
console.log(fish.name); //Ergebnis Flipper
2 Antworten
getter und setter dienen im OOP immer dem gleichen ,
du sprichst etwas von aussen an und machst aber intern die verarbeitung , die sich ändern kann , anderen objekten kann und sollte es egal sein wie intern die daten verarbeitet werden . ausserdem kümmert sich ein objekt um sich selber und wird nich direkt von anderen objekten in ihren attributen geändert .
ein fahrstuhl der nur 5 stockwerke platz hat , kann nun mal nicht in den 6 stock fahren .
Mit der set Methode ermöglichst du ja erst die Änderung , natürlich dienen diese Methoden der Abkappslung, da der modifier private ansonsten keinen Sinn machen würde