Prototípusok
A prototype-on keresztül egy darab függvényt vagy változót tudunk hozzáragasztani az osztályhoz. Fontos, hogy mindig legyen kezdőértéke. A függvényen belül this segítségével tudunk hivatkozni az adott példányra amin meg fogjuk hívni. Fontos, hogy csak publikusan látható tagokat érünk el!
Map.prototype.sum = function (){
let sum = 0;
for(const item of this.values()){
sum += item;
}
return sum;
}
const map1 = new Map();
...
console.log(map1.sum());
VIGYÁZAT!
Amire nagyon oda kell figyelni,hogy a prototype-on keresztül hozzáadott változó automatikusan statikus lesz, de nem érhetjük el, csak a prototype-on keresztül!
Ha példány szinten szeretnénk megváltozhatni, akkor már a létrehozott néven tudjuk a pédányon hívni.
class Card{
...
}
Card.prototype.image = "https://place.tld/best.png";
const card1 = new Card();
card1.image = "https://other.tld/best.png"
console.log(card1.image);
//https://other.tld/best.png
console.log(Card.prototype.image);
//https://place.tld/best.png
Mixinek
Mixineknek azokat az objektumokat hívjuk, amelyeket hozzá ragasztunk egy osztály prototípusához. Ennek az az előnye, hogy egyszerre több tulajdonságot tudunk hozzáragasztani. A hozzáragasztás az Object osztály statikus assign függvényén keresztül fog történni, ahol először megadjuk az osztályunk prototípusát, majd ezt követően a mixint, amit hozzá szeretnkénk tenni.
const userMixin = {
image: "https://server.tld/profile-picture.png",
resetPassword(newPass){
this.Password = newPass;
}
}
Object.assign(User.prototype,userMixin);
\pagebreak