Helsingin yliopisto / tietojenkäsittelytieteen osasto / Ohjelmointitekniikka (JavaScript) / © Arto Wikla 2018

kuva 9 Periytyminen, prototyypit ja prototyyppiketju

Muutettu viimeksi 29.11.2018 / Sivu luotu 12.11.2013

Niin monimutkaisilta kuin JavaScriptin suoritusaikaiset tietorakenteet ehkä näyttävätkin, oikeastaan kaiken takana on vain kolmenlaisia oliota: funktio-olioita, niihin liittyviä prototyyppiolioita ja "tavallisia" olioita. Kaikilla olioilla – paitsi yhdellä – on oma prototyyppinsä, josta se perii ominaisuuksia. Periytyminen on kuitenkin erilaista kuin luokkapohjaisissa oliokielissä.

Huom: Vaikka olion prototyyppikin on olio, tällä kurssilla käytämme sanaa prototyyppiolio tarkoittamaan vain funktio-olioon liitettyä oliota. Tuon sanan yhteydessä on aina mainittava minkä funktion prototyyppioliosta on kysymys!

Jokaisella funktio-oliolla on siis oma prototyyppiolionsa, joka kuitenkaan EI OLE kyseisen funktion oma prototyyppi – paitsi yhdellä funktiolla: Funktiolla Function prototyyppi ja prototyyppiolio ovat sama asia, koska Function-olio perii funktio-ominaisuutensa juuri omalta prototyyppiolioltaan!

Konstruktorifunktioiden prototyyppiolioista muodostetaan linkitettyjä ketjuja, joista oliot perivät ominaisuuksia. Normaalisti jokaisen olion prototyyppien ketju päättyy Object-funktion prototyyppiolioon.

Kuulostaako monimutkaiselta? Proosatekstin kirjoittaminen aiheesta on aika hankalaa! Kyllä asiat selvenevät, aletaan piirrellä...

Funktio Object

Funktio Function

Prototyyppiketju ja __proto__-kenttä

Oma konstruktorifunktio

Omaa perintää

Aksessoreita ja eläimiä

Parametreja perintäketjussa ylöspäin

instanceof

Object.create ja miksi leijonalla on vain kaksi jalkaa


Hit Counter by Digits
by WebCounter
(19.11.2013)