[[oktatas:web:javascript|< JavaScript]] ====== JavaScript prototype ====== * **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 ===== A prototype ===== A prototípus egy mechanizmus, amely révén a JavaScript objektumok funkciókat örökölnek egymástól. A JavaScriptet gyakran nevezik prototípus alapú nyelvnek. A prototípus segítségével új tulajdonságokkal és metódusokkal egészíthetjük ki az objektumaink konstruktorait. ===== String példa ===== A String objektum kiterjesztése print() függvénnyel: String.prototype.print = function() { console.log(this.valueOf()); } let s = 'alma'; s.print(); Másik megoldás: function printString() { console.log(this.valueOf()); } String.prototype.print = printString; let s = 'alma'; s.print(); ===== Tanuló példa ===== A prototype segítségével új tulajdonságot adhatunk az objektumainknak: function Tanulo(nev, nem) { this.nev = nev; this.nem = nem; } Tanulo.prototype.kor = 15; let peti = new Tanulo(); console.log(peti.kor); ===== Dolgozo példa ===== Új metódus hozzáadása az objektumunk számára: function Dolgozo(nev, telepules, fizetes) { this.nev = nev; this.telepules = telepules; this.fizetes = fizetes; } Dolgozo.prototype.munka = function() { console.log('munka'); } let janos = new Dolgozo('Nagy János', 'Szolnok', 8350000); console.log(janos.nev); janos.munka(); Ha beletesszük a függvénylétrehozást a Dolgozo konstruktorba, minden egyes dolgozó példány esetén külön létrejön a munka() függvény, ami memória pazarlás.