ECMAScriptin objekti sovellus
- Edellinen sivu Orientoitu objekteihin
- Seuraava sivu Objektityypit
Objektien luominen ja tuhoaminen tapahtuu JavaScriptin suoritusprosessin aikana, ja ymmärtää tämän mallein merkitys on keskeistä koko kielen ymmärtämisessä.
Ilmoittaminen ja instansointi
Objektin luominen tapahtuu avainsanalla new, jota seuraa instansoidun luokan nimi:
var oObject = new Object(); var oStringObject = new String();
Ensimmäinen rivi luo Object-luokan esimerkin ja tallentaa sen muuttujaan oObject. Toinen rivi luo String-luokan esimerkin ja tallentaa sen muuttujaan oStringObject. Jos rakentajaa ei ole parametreja, sulkeet eivät ole välttämättömiä. Siksi voidaan kirjoittaa seuraavasti:
var oObject = new Object; var oStringObject = new String;
Objektin viittaus
Edellisissä luvuissa olemme esitelleetViittauslajien käsiteECMAScriptissä ei voida saavuttaa objektin fyysistä esitystä, vaan vain objektin viittauksia. Jokaisen objektin luonnin yhteydessä muuttujaan tallennetaan aina objektin viittaus, ei itse objektia.
Objektin poistaminen viittauksesta
ECMAScript sisältää jätteiden keräämisen ohjelman (garbage collection routine), mikä tarkoittaa, että ei ole tarpeen erityisesti tuhota objekteja vapauttaakseen muistia. Kun objektiin ei ole enää viittausta, sanotaan, että objekti on poistettu viittauksesta. Kun jätteiden keräämisen ohjelma suoritetaan, kaikki poistetut objektit tuhotaan. Jokaisen kerran, kun funktio suorittaa koodinsa loppuun, jätteiden keräämisen ohjelma suoritetaan, vapauttaen kaikki paikalliset muuttujat, ja joissakin muissa arvaamattomissa tilanteissa jätteiden keräämisen ohjelma suoritetaan myös.
Asettamalla objektin kaikki viittaukset nulliksi voidaan pakottaa objektin poistaminen. Esimerkiksi:
var oObject = new Object; // tee jotain objektin kanssa täällä oObject = null;
Kun muuttuja oObject asetetaan nulliksi, ensimmäisen luodun objektin viittaus katoaa. Tämä tarkoittaa, että seuraavan kerran, kun käytetään käyttämätöntä muistin keruuprosessia, objekti tuhotaan.
Jokaisen objektin käytön jälkeen on hyvä poistaa se ja vapauttaa muisti, mikä on hyvä tapa. Tämä varmistaa myös, ettei käytetä enää käyttämättömiä objekteja, mikä estää ohjelmointivirheiden syntyä. Lisäksi vanhat selaimet (kuten IE/MAC) eivät kerää tehokkaasti käytöstä poistettuja muistialueita, joten objektit eivät ehkä tuhota oikein, kun sivu ladataan. Poistamalla objekti ja sen kaikki ominaisuudet on paras tapa varmistaa oikea muistin käyttö.
Huomioitavaa:Olkaa varovaisia, kun poistatte objektin kaikkien viittausten. Jos objektiella on kaksi tai useampi viittaus, on poistettava objekti oikein asettamalla kaikki viittaukset nulliksi.
Aikainen ja myöhäinen sitominen
Sitingointi (binding) tarkoittaa tapaa yhdistää objektin rajapinta objektin instanssiin.
Aikainen sitominen (early binding) tarkoittaa, että objektin ominaisuudet ja metodit määritellään ennen objektin instanssointia, jolloin kääntäjä tai tulkki voi siirtää konekoodia etukäteen. Java- ja Visual Basic -tyyppisissä kielissä aikainen sitominen mahdollistaa IntelliSense:n käytön kehitysympäristössä (eli tarjoaa kehittäjille luettelon objektin ominaisuuksista ja menetelmistä). ECMAScript ei ole vahvasti tyyppinen kieli, joten se ei tue aikaisempaa sitomista.
Toisaalta, myöhäinen sitominen (late binding) tarkoittaa, että kääntäjä tai tulkki ei tiedä objektin tyyppiä ennen suorittamista. Käyttämällä myöhäistä sitomista ei tarvitse tarkistaa objektin tyyppiä, vaan riittää tarkistaa, tukeeko objekti ominaisuuksia ja menetelmiä. Kaikki ECMAScript-muuttujat käyttävät myöhäistä sitomista. Tämä mahdollistaa suuren määrän objektioperaatioita ilman rangaistuksia.
- Edellinen sivu Orientoitu objekteihin
- Seuraava sivu Objektityypit