Class
Uusi helppokäyttöisempi syntaksi funktioiden ja prototyyppimetodien esittelyyn
class Puutavara {
tulostaEsite() {
console.log(`${this.tuote}: ${this.materiaali}, ${this.hinta()} €/kpl`);
}
}
class Vaneri extends Puutavara {
constructor(mitat, vahvuus, materiaali) {
// Yläluokan rakentajakutsu. Parametrit pitää tarvittaessa välittää kutsussa.
super();
this.mitat = mitat;
this.vahvuus = vahvuus;
this.materiaali = materiaali;
}
hinta() {
const neliöhinnat = Vaneri.neliöhinnat[this.materiaali];
const neliöhinta = neliöhinnat.find(
neliöhinta => neliöhinta.vahvuus === this.vahvuus
);
return this.mitat.x / 1000 * this.mitat.y / 1000 * neliöhinta.hinta;
}
// Luokan (staattisten ja tavallisten) propertyjen asetus on tällä hetkellä
// stage 3:ssa.
static neliöhinnat = {
koivu: [
{ vahvuus: 4, hinta: 11.80 },
{ vahvuus: 6.5, hinta: 13.20 },
{ vahvuus: 9, hinta: 15.50 },
{ vahvuus: 12, hinta: 19.20 }
]
};
}
// Staattisia propertyjä voidaan asettaa myös esittelyn jälkeen:
// Vaneri.neliöhinnat = { ... };
// Prototyyppiobjekti on käytössä ja muokattavissa kuten perinteiselläkin
// syntaksilla rakennetuissa funktioissa.
Vaneri.prototype.tuote = 'vaneri';
const levy = new Vaneri(
{
x: 1220,
y: 2440
},
6.5,
'koivu'
);
levy.tulostaEsite(); // => "vaneri: koivu, 39.29376 €/kpl"
Last updated