[[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.