Konwersja typów

Konwersja typów jest przeprowadzana automatycznie zawsze wtedy, kiedy zachodzi taka potrzeba. Odbywa się to poprzez wywołanie następujących operatorów konwersji (nie są częścią języka, a zostały zdefiniowane jedynie celu wsparcia semantyki):

  1. toPrimitive(PreferredType) - przekształca obiekt na typ pierwotny: Undefined, Null, Boolean, Number lub String. Jeżeli obiekt jest zdolny do przeprowadzenia konwersji więcej niż jednego typu pierwotnego (na podstawie jego wartości domyślnej - defaultValue), pod uwagę brany jest argument PreferredType (typ preferowany).
  2. toBoolean()
  3. toNumber()
  4. toInteger()
    Algorytm działania:
    1. Wywołuje metodę toNumber
    2. Jeżeli rezultat jest NaN, zwraca +0
    3. Jeżeli rezultat jest: +0, -0, +∞, -∞, to zwraca rezultat
    4. Zwraca: sign(Rezultat) * floor(abs(Rezultat))
  5. toInt32() - konwertuje na jedną z 232 wartości całkowitych z zakresu od -232 do 231-1 włącznie
    Algorytm działania:
    1. Wywołuje metodę toNumber
    2. Jeżeli rezultat jest NaN, zwraca +0
    3. Jeżeli rezultat jest: +0, -0, +∞, -∞, to zwraca rezultat
    4. Oblicza: Wynik = sign(Rezultat) * floor(abs(Rezultat))
    5. Oblicza: Wynik %= 232
    6. Jeżeli Wynik jest większy lub równy 231 zwraca Wynik-232; w przeciwnym razie zwraca Wynik
  6. toUint32() - konwertuje na jedną z 232 wartości całkowitych z zakresu od 0 do 232-1 włącznie
    Algorytm działania:
    1. Wywołuje metodę toNumber
    2. Jeżeli rezultat jest NaN, zwraca +0
    3. Jeżeli rezultat jest: +0, -0, +∞, -∞, to zwraca rezultat
    4. Oblicza: Wynik = sign(Rezultat) * floor(abs(Rezultat))
    5. Zwraca: Wynik %= 232
  7. toUint16() - konwertuje na jedną z 216 wartości całkowitych z zakresu od 0 do 216-1 włącznie
    Algorytm działania:
    1. Wywołuje metodę toNumber
    2. Jeżeli rezultat jest NaN, zwraca +0
    3. Jeżeli rezultat jest: +0, -0, +∞, -∞, to zwraca rezultat
    4. Oblicza: Wynik = sign(Rezultat) * floor(abs(Rezultat))
    5. Zwraca: Wynik %= 216
  8. toString()
  9. toObject()