Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Sequence-objekt

Sequence-objekt används framför allt i for-in loopar.

Egenskaper i Sequence-objekt

Sequence-objekt kan bara ha egenskaper vars namn är heltal i ett visst intervall som angavs när Sequence-objektet skapades.

Exempel 1:

for (i in Sequence(5, 12)) 
{
	arr[i] = 0;
}

Denna loop sätter elementen med index 5 till 12 i arrayen arr till 0. Variabeln i kommer alltså få värdet 5 första gången loopen körs, 6 nästa gång osv. Om man ser Sequence(5, 12) som ett objekt som har egenskaperna 5,6,7,8,9,10,11 och 12 fungerar denna loop alltså nästan precis som en den inbyggda for-in loopen i ECMAScript. Skillnaden är att i blir ett heltal i stället för en sträng. Dessutom kommer Sequence(1, 1000000) inte ta upp mer minne än Sequence(1,2). Skriver du Sequence(12,5) kommer styrvariabeln få värdena i omvänd ordning i stället.

Exempel 2:

var result = 0;
for (i in Sequence(1, 10)) 
{
	result = result + i;
}

Eftersom i alltid blir ett heltal, så kommer result att ha värdet (1+2+3+4+5+6+7+8+9+10):

55

inte värdet

“12345678910”

som man skulle fått om i hade varit ett värde av typen String. Plus-operatorn (+) utför nämligen sträng-konkatenering i ECMAScript om endera ledet är av typen sträng.

Sequence-konstruktorn

Du kan skapa nya Sequence-objekt genom att använda Sequence-konstruktorn. Att ett Sequence-objekt går från heltalet start till heltalet end innebär att den har egenskaper med namnen start, start+1, start+2, … end-1, end.

Exempel:

var mySequence = new Sequence(1, 3);

resulterar i att ett nytt objekt med egenskaperna 1, 2 och 3 skapas. Dessa egenskaper har alla inledningsvis värdet undefined.

Du kan lagra värden i dessa egenskaper, men inte i egenskaper med något annat namn än 1, 2 och 3.

mySequence[1] = "hej";
sResult = mySequence[1];
mySequence[0] = "hallå";
sResult += ", " + mySequence[0];

Det första anropet till alert kommer att tilldela sResult texten “hej”. Det andra anropet kommer däremot att generera texten “undefined” eftersom man inte kan skapa nya egenskaper i Sequence-objekt utöver de som angavs vid det tillfälle då sekvensen konstruerades.

new Sequence(end)

Skapar ett nytt Sequence-objekt som går från 0 till end. Om end inte är ett heltal, avrundas det nedåt till närmsta heltal.

new Sequence(start, end)

Skapar ett nytt Sequence-objekt som går från start till end. Om någon av parametrarna inte är ett heltal, avrundas den nedåt till närmsta heltal.

Om start är större än end, enumereras egenskaperna i omvänd ordning:

var s = "";
for(i in Sequence(3, 1))
{
s += i + " ";
}
s += "Takeoff!";
sResult = s;

Skriptet ovan kommer att tilldela sResult texten “3 2 1 Takeoff!”.

Sequence(…)

När Sequence-konstruktorn anropas som en funktion skapas ett nytt Sequence-objekt precis som om du hade använt new.

Sequence-prototypen

Sequence-prototypen har inga särskilda egenskaper.