ES6 Osztályok vs. Prototípusok: Csak szintaktikai cukorka (Syntactic Sugar)?
A 2015-ben megjelent ES6 (ECMAScript 6) szabvány egyik legnagyobb újítása a class kulcsszó bevezetése volt. Sokan azt hitték, hogy a JavaScript ezzel teljesen megváltozott, de a valóságban ez csupán "szintaktikai cukorka" (syntactic sugar) a már meglévő prototípus-alapú működés felett.
Az osztályok bevezetése sokkal tisztább, olvashatóbb és a más nyelvekből érkező fejlesztők számára ismerősebb struktúrát biztosít. Nézzük meg, hogyan néz ki az előző cikkben bemutatott prototípusos példa modern ES6 osztályként:
class Fejleszto {
constructor(nev, nyelv) {
this.nev = nev;
this.nyelv = nyelv;
}
bemutatkozik() {
return `Szia, a nevem ${this.nev} és ${this.nyelv} nyelven kódolok.`;
}
}
Privát metódusok és mezők az osztályokban
A modern JavaScript (ES2022+) már támogatja a valódi privát osztálytagokat is. Ehhez a változó vagy metódus neve elé egy # (hash) karaktert kell tenni. Ezeket a tagokat az osztályon kívülről semmilyen módon nem lehet elérni vagy módosítani:
class Bankfiok {
#egyenleg = 0; // Privát mező
constructor(tulajdonos, kezdoOsszeg) {
this.tulajdonos = tulajdonos;
this.#egyenleg = kezdoOsszeg;
}
getEgyenleg() {
return this.#egyenleg; // Osztályon belül elérhető
}
}