Typy
- Undefined - niezdefiniowany
- Null - nic
- Boolean - logiczny
- Number - liczbowy
- Zakres = 18437736874454810627 (264-253+3)
NaN
("Not-a-Number")
Infinity
(∞), +Infinity
, -Infinity
- String - tekstowy
- Object - obiektowy
- property - własność
- name - nazwa
- value - wartość
- attributes - atrybuty
- readOnly - tylko do odczytu
- dontEnum - zakaz wyliczania poprzez instrukcję
for-in
- dontDelete - blokada operatora
delete
- internal (wewnętrzny) - nie posiada nazwy i nie jest bezpośrednio dostępny
- Własności wewnętrzne (nie są częścią języka, a zostały zdefiniowane jedynie celu wsparcia semantyki)
- prototype - obiekt wykorzystywany do implementacji dziedziczenia (definiuje wygląd, tzn. własności i metody, nowych egzemplarzy obiektów)
- class - wartość określająca rodzaj obiektu
- value - wartość
- scope - zakres definiujący środowisko, w którym obiekt został wywołany
- Metody wewnętrzne (nie są częścią języka, a zostały zdefiniowane jedynie celu wsparcia semantyki)
- get(PropertyName) - zwraca wartość podanej własności
- put(PropertyName, Value) - ustawia wartość podanej własności
- canPut(PropertyName) - wskazuje czy można ustawiać podaną wartość
- hasProperty(PropertyName) - wskazuje czy obiekt ma własność o podanej nazwie
- delete(PropertyName) - usuwa wskazaną własność z obiektu
- defaultValue(Hint) - zwraca pierwotną wartość domyślną dla obiektu
- construct(Arguments) - wywoływana przy tworzeniu obiektu operatorem
new
- call(Arguments) - metoda implementowana przez funkcje składowe obiektu
- hasInstance(Value) - wskazuje czy podana wartość deleguje zachowania dla obiektu
- match(String, Index) - zwraca wynik wyrażenia regularnego
- Reference (referencja) - nie jest typem danych języka. Jest wykorzystywana jedynie jako pośredni rezultat wyrażenia i nie może być przechowywana jako wartość zmiennej ani własności. Pojęcie wprowadzone w celu wytłumaczenia działania operatorów takich jak:
delete
, typeof
, this
czy operatorów przypisania (oczekuje się, że lewostronny operand przypisania produkuje referencję). Referencja składa się z dwóch komponentów, do których dostęp dają:
- getBase(V) - zwraca obiekt bazowy referencji V
- getPropertyName(V) - zwraca nazwę własności referencji V
- getValue(V)
Algorytm działania:
- Jeżeli V nie jest referencją, zwraca V
- Wywołaj
Obiekt = getBase(V)
- Jeżeli
Obiekt == null
, rzuca wyjątek ReferenceError
- Zwraca
Obiekt.get(getPropertyName(V))
- getValue(V, W)
Algorytm działania:
- Jeżeli V nie jest referencją, rzuca wyjątek
ReferenceError
- Wywołaj
Obiekt = getBase(V)
- Jeżeli
Obiekt == null
, wywołuje dla obiektu globalnego put(getPropertyName(V), W)
- W przeciwnym razie wywołuje
Obiekt.put(getPropertyName(V), W)
- List (lista) - nie jest typem danych języka. Jest wykorzystywana jedynie jako pośredni rezultat wyrażenia i nie może być przechowywana jako wartość zmiennej ani własności. Pojęcie wprowadzone w celu wytłumaczenia wyceny listy argumentów w wyrażeniu
new
. Lista to prosto uporządkowana sekwencja wartości o dowolnej długości.
- Completion (wykonanie) - nie jest typem danych języka. Jest wykorzystywane jedynie jako pośredni rezultat wyrażenia i nie może być przechowywana jako wartość zmiennej ani własności. Pojęcie wprowadzone w celu wytłumaczenia działania instrukcji takich jak:
break
, continue
, return
i throw
. Składa się z:
- type (typ) -
normal
, break
, continue
, return
lub throw
- value (wartość) - dowolna wartość albo
empty
- target (cel) - dowolny identyfikator albo
empty