Ich versuche, JS ES6-Klassen zu verstehen, und mein Problem wird "Maximale Call-Stack-Größe überschritten", wenn ich auf "this" stehe. Variablen. Schauen wir uns dieses Beispiel an:ES6 JS Klassen-Unterstreichungssatz und Methoden abrufen "Maximale Call-Stack-Größe überschritten"
class Human {
constructor(age) {
this.age = age;
// "this._age = age;" output:
// Property age of instance without underscore: 34
// Property age of instance with underscore: 34
}
get age() {
return this._age;
// Without underscore error: "Uncaught RangeError: Maximum call stack size exceeded"
}
set age(age) {
this._age = age;
// Without underscore error: "Uncaught RangeError: Maximum call stack size exceeded"
console.log(`Without underscore: ${this.age}`);
console.log(`With underscore: ${this._age}`);
}
}
let john = new Human(34);
console.log(`Property age of instance without underscore: ${john.age}`);
console.log(`Property age of instance with underscore: ${john._age}`);
Warum muss ich diesen Unterstrich in get und set Methoden verwenden? Warum ändern sich Ausgaben so, wenn ich sie im Konstruktor verwende? Warum gibt es keinen Metter? Ich benutze Unterstriche oder nicht, wenn ich mich auf Instanzeigenschaften beziehe? In der MDN-Dokumentation gibt es überhaupt keine Unterstreichung.