ECMAScript Object Anvendelse

Opprettelse og ødeleggelse av objekter skjer under JavaScripts kjørsel, og å forstå betydningen av denne paradigmatiske forståelsen er avgjørende for å forstå hele språket.

Erklæring og instansiering

Opprettelsen av objekter skjer ved å bruke nøkkelordet new etterfulgt av navnet på klassen som skal instansieres:

var oObject = new Object();
var oStringObject = new String();

Første linje av kode oppretter en instans av Object-klasse og lagrer den i variabelen oObject. Andre linje av kode oppretter en instans av String-klasse og lagrer den i variabelen oStringObject. Hvis konstruktøren ikke har noen parametere, er parentesene ikke nødvendige. Derfor kan de to linjene over skrives på følgende måte:

var oObject = new Object;
var oStringObject = new String;

Objekt referanse

I de tidligere kapitlene har vi introdusertKonseptet med referanse typeI ECMAScript kan man ikke få tilgang til objektets fysiske representasjon, men kun til referansen til objektet. Hver gang et objekt opprettes, lagres referansen til objektet i variabelen, ikke objektet selv.

Objekt avskrivning

ECMAScript har en usynlig lagerinnsamling program (garbage collection routine), som betyr at det ikke er nødvendig å spesifikt ødelegge objekter for å frigjøre minne. Når det ikke lenger er noen referanser til et objekt, kalles det avskrevet (dereferenced). Når usynlig lagerinnsamling program kjører, blir alle avskrevne objekter ødelagt. Hver gang en funksjon fullfører sin kode, kjører usynlig lagerinnsamling program for å frigjøre alle lokale variabler, og i noen andre uforutsette situasjoner, kjører usynlig lagerinnsamling program også.

Sæt alle referencer til objektet til null for at tvunget afbryde objektet. For eksempel:

var oObject = new Object;
// Udfør noget med objektet her
oObject = null;

Når variablen oObject sættes til null, eksisterer der ingen reference til det første oprettede objekt. Dette betyder, at objektet vil blive destrueret næste gang inaktiv hukommelsesindsamling kører.

Det er en god vane at afbryde et objekt, når det er brugt op, for at frigive hukommelse. Dette sikrer også, at objekter, der ikke længere er tilgængelige, ikke bruges, hvilket kan forhindre fejl i programdesign. Derudover har gamle browsere (som IE/MAC) ikke en fuldt udviklet program til inaktiv hukommelse, så objekter kan ikke nødvendigvis blive korrekt destrueret, når siden afmonteres. At afbryde objektet og alle dens egenskaber er den bedste måde at sikre korrekt hukommelsesbrug.

Bemærk:Vær forsigtig med at afbryde alle referencer til et objekt. Hvis et objekt har to eller flere referencer, skal alle referencer til objektet sættes til null for at kunne afbryde objektet korrekt.

Tidlig og sen bindning

Binding (binding) refererer til metoder til at kombinere objektets grænseflade med objektets instans.

Tidlig bindning (early binding) refererer til at definere objektets egenskaber og metoder, før objektet instanceres, så kompileren eller fortolkeren kan konvertere maskinkode i forvejen. Med sprog som Java og Visual Basic kan tidlig bindning bruges til at bruge IntelliSense (dvs. funktionen, der giver en liste over objektets egenskaber og metoder til udviklere) i udviklingsmiljøet. ECMAScript er ikke et stærkt typet sprog og understøtter derfor ikke tidlig bindning.

På den anden side, sen bindning (late binding) refererer til, at kompileren eller fortolkeren ikke kender objektets type, før køringsøjeblikket. Ved at bruge sen bindning er det ikke nødvendigt at kontrollere objektets type, men kun at kontrollere, om objektet understøtter egenskaber og metoder. Alle variabler i ECMAScript bruger metoden til sen bindning. Dette muliggør udførelse af store mængder objektoperationer uden nogen straf.