\(\renewcommand{\vec}[1]{\mathbf{#1}} \DeclareMathOperator*{\sijoitus}{\Big/} \newcommand{\eval}[2]{\sijoitus_{\kern-0.7em#1}^{\kern0.7em#2}\!} \)

5.3.12 Oliot

Olio on ohjelmoinnissa johonkin luokkaan (esim. auto, henkilö tai osoite) liittyvä ”paketti”, joka sisältää muuttujia ja metodeita. Sanotaan myös, että olio on luokan ilmentymä. Kaikki kyseisen luokan oliot sisältävät samat ominaisuudet (muuttujat) ja toiminnot (metodit).

Ominaisuuksien arvot voivat kuitenkin olla eri olioilla erilaisia. Esimerkiksi yhden auton merkki voi olla "Ford" ja toisen "BMW".

Javascriptissa uusia olioita voi luoda muutamalla eri tavalla. Yleinen tapa on käyttää erillistä rakentajametodia (konstruktori). Seuraavassa esitellään auto-olion luominen (jätän selvyyden vuoksi script-tagit pois esimerkeistä):

function auto(merkki, malli, vm, kunto) { this.merkki=merkki; this.malli=malli; this.vm=vm; this.kunto=kunto; // Seuraavan avulla kuntoa voi muuttaa: this.muuta_kunto = muuta_kunto; } // Kuntoa muuttava funktio: function muuta_kunto(uusi_kunto){ this.kunto = uusi_kunto; } var oma_auto = new auto("Nissan", "Almera", 1996, "Loistava!");

Yllä luotiin auto-luokan edustaja "Nissan", jonka malli on "Almera", vuosimalli 1996 ja kunto "Loistava!". Huomaa this-avainsana. Se viittaa aina kyseiseen olioon ja sen paikalle sijoitetaan monesti olion nimi (tässä "oma_auto"). Oma_auto-olion tiedot saadaan ulos seuraavasti:

KoodiTulos (tämä näkyy ruudulla)
document.write("Auton merkki on '"+oma_auto.merkki+
               "', malli '"+oma_auto.malli+
               "', vuosimalli '"+oma_auto.vm+
               "' ja kunto '"+oma_auto.kunto+"'";

Nyt auton kuntoa voidaan muuttaa seuraavasti:

oma_auto.muuta_kunto('Ihan romu');
Nyt auto-olio sisältää seuraavat tiedot: