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.