[[:oktatas:web:javascript|< JavaScript]] ====== Objektum Orientáltan ES6 ====== * **Szerző:** Sallai András * Copyright (c) 2021, Sallai András * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]] * Web: https://szit.hu ===== ES6 ===== Az Objektum Orientált programozást az ES6 (ECMAScript 2015)-ban új szintre emelték. Megjelentek a valódi osztálydefiníciók. ===== Osztály ===== class Dolgozo { constructor() { this.nev = 'Nagy János'; this.telepules = 'Szolnok'; this.fizetes = 8500000; } } dolgozo = new Dolgozo(); console.log(dolgozo.nev); console.log(dolgozo.telepules); console.log(dolgozo.fizetes) ===== Öröklés ===== class Szemely { constructor() { this.nev = 'Nagy János'; this.telepules = 'Szolnok'; } } class Dolgozo extends Szemely { constructor() { super(); this.fizetes = 8500000; } } dolgozo = new Dolgozo(); console.log(dolgozo.nev); console.log(dolgozo.telepules); console.log(dolgozo.fizetes) A super() hívás kötelező. ===== Konstruktor és függvények ===== class Szemely { constructor(nev, telepules) { this.nev = nev; this.telepules = telepules; } } class Dolgozo extends Szemely { constructor(nev, telepules, fizetes) { super(); this.fizetes = fizetes; } lekerFizetes() { return this.fizetes; } } dolgozo = new Dolgozo('Nagy János', 'Szolnok', 8500000); console.log(dolgozo.lekerFizetes()); ===== Privát adattagok ===== class Szemely { #nev #telepules constructor(nev, telepules) { this.#nev = nev; this.#telepules = telepules; } lekerNev() { return this.#nev; } lekerTelepules() { return this.#telepules } } mari = new Szemely('Nagy János', 'Szolnok'); console.log(mari.lekerNev()); console.log(mari.lekerTelepules()); ===== Kivételek ===== try { throw new Error('Hiba! valami elromlott'); }catch(e) { console.log(e); } var num: number = -1; try { if (num <0) throw new Error('Hiba! Negatív szám'); }catch(e) { console.log(e); } ===== Lásd még ===== * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Public_class_fields (2021) * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Classes/Private_class_fields (2021)