Hej,
z jednego kursu na temat obiektów i prototypów mamy podany kod:
function Helicopter(name) {
this.name = name;
this.ammo = 2000;
this.rockets = 16;
this.attack = function() {
this.ammo -= 100;
this.rocket -= 2;
console.log(`
Helikopter: ${this.name} atakuje
Pozostało amunicji: ${this.ammo}
Pozostało rakiet: ${this.rockets}
`);
}
}
const army = [];
for (let i=0; i<=1000000; i++) {
const heli = new Helicopter("Apache" + i);
army.push(heli);
}
,,Jeżeli teraz stworzymy na takiej bazie 1000000 obiektów, to będziemy mieli 1000000 różnych właściwości name, 1000000 różnych właściwości ammo, rockets i uwaga - tyle samo duplikatów metody attack, która przecież za każdym razem będzie taka sama (jej kod się nie zmienia, zmienia się tylko obiekt na który wskazuje this)."
Aby oszczędzić zasoby, najlepiej metodę attack dodać jako prototyp, bo wtedy jest tylko w jednym miejscu w pamięci. A jak to się ma do ES6? Tworząc klasę o podobnej metodzie tworzy się tak samo dla każdego obiektu metoda, czy jest jak w oparciu o prototypy?
Pozdrawiam