JavaScript — Introduktion genom exempel

11.1 Prototype och metoder

I kapitel 8 gick vi igenom hur objekt kunde användas för att strukturera data. Objekten innehöll då endast egenskaper, där olika värden sparades. Nu ska vi gå vidare med att se på hur vi kan lägga till metoder i objekten.

Den första metoden vi har är konstruktorfunktionen (constructor). Genom den har vi en början på en objektklass, som är en definition av objektet och en "mall" som används, då vi skapar instanser. Vi ska nu också skapa en definition av objektklassen, där både egenskaper och alla metoder som hör till objektet ska ingå.

18 min.

Sammanfattning

Varje instans av ett objekt innehåller en uppsättning av egenskaperna, så att olika värden kan sparas i dem i olika instanser av objektet.

Metoderna är dock inte olika för olika instanser, utan de ser likadana ut för alla instanser. Metoderna sparas därför inte i instanserna, utan de ligger i en s.k. prototyp för objektet. Därmed finns det endast en uppsättning av metodernas kod, oavsett hur många instanser det finns.

Det går lägga till metoder till ett objekt, genom att referera till objektets namn och prototype, t.ex.
MyObject.prototype.myMethod = function () { ... }

Detta kan vara användbart, om man vill lägga till egna metoder till ett redan existerande objekt, t.ex. till Array. Förr användes detta även då man skapade egna objekt, men numera bör man istället använda nyckelordet class.

class

Skapar man helt egna objekt, grupperar man hela definitionen av objektet i en class-deklaration, t.ex.

class MyObject {
    constructor() {
        this.property = ...
        ...
    }
    myMethod() {
        ...
    }
    ...
}

Konstruktorfunktionen måste heta constructor, men övriga metoder namnger man till vad man själv vill. En vanlig konvention är att inleda namnet på hela klassen med en versal, medan namnen på egenskaperna och metoderna inleds med gemener.

Egna övningar

Använd filerna test.html, test.css och test.js.

Skriv om programmet med konstruktorfunktionen som du skapade i övningen i ex 8-5 på följande sätt:

Vid utskrift kan det t.ex. se ut på följande sätt, med den CSS-kod som redan finns i CSS-filen.

Exempel på en väderprognos