ECMAScript objektorienteret teknologi

Objektorienterede termer

Objekt

ECMA-262 definerer objekter (object) som 'en uordnet samling af egenskaber, hvor hver egenskab indeholder en primitiv værdi, et objekt eller en funktion'. Strikt taget betyder dette, at objekter er en række værdier uden bestemt rækkefølge.

Selvom ECMAScript definerer objekter på denne måde, er dens mere generelle definition en repræsentation af et kodens substantiv (person, sted eller ting)

Klasse

Hvert objekt defineres af en klasse, og man kan betragte klassen som en opskrift på objektet. En klasse skal ikke kun definere objektets grænseflade (interface) (de egenskaber og metoder, udviklere har adgang til), men også definere objektets interne arbejde (det kode, der gør egenskaberne og metoderne fungerer). Kompilerere og fortolkere bygger objekter baseret på klassens beskrivelse.

Instans

Når et program bruger klassen til at oprette objekter, kaldes de oprettede objekter for klassens instancer (instance). Det eneste begrænsning for antallet af objekter, der kan genereres af en klasse, kommer fra den fysiske hukommelse på maskinen, der kører koden. Hver instans opfører sig ens, men hver instans håndterer en gruppe uafhængige data. Processen med at oprette objektinstancer fra en klasse kaldes instansiering (instantiation).

I de tidligere kapitler nævnte vi, at ECMAScript ikke har en officiel klasse. I stedet beskriver ECMA-262 objekter som objekters opskrift. Dette er en kompromisløs løsning i ECMAScript, fordi objektbeskrivelsen faktisk er objektet selv. Selvom klassen ikke findes rigtigt, kalder vi objektbeskrivelsen for klasse, fordi de fleste udviklere er mere bekendt med dette termer, og funktionelt set er de ligeværdige.

Krav til objektorienterede sprog

Et objektorienteret sprog skal give udviklere fire grundlæggende evner:

  1. Encapsulation - Evnen til at gemme relaterede informationer (uanset data eller metoder) i objektet
  2. Aggregering - Evnen til at gemme en objekt i en anden objekt
  3. Arv - Evnen til at få klassens egenskaber og metoder fra en anden klasse (eller flere klasser)
  4. Polymorfi - Evnen til at skrive funktioner eller metoder, der kan køre på flere måder

ECMAScript understøtter disse krav og kan derfor betragtes som objektorienteret.

Objektets opbygning

I ECMAScript består objekter af egenskaber (attribute), som kan være primitive værdier eller referencer. Hvis egenskaben indeholder en funktion, betragtes den som en metode (method) for objektet, ellers betragtes egenskaben som en egenskab (property) for objektet.