W języku JavaScript zapis
przedmiot.nazwa = x;oznacza, że
A. właściwości nazwa obiektu przedmiot zostanie przypisana wartość zmiennej x.
Dobrze. Lewa strona to cel - właściwość nazwa otrzymuje wartość zmiennej x.
B. zostanie wywołana metoda nazwa z argumentem x.
Źle. Wywołanie metody wymaga nawiasów: przedmiot.nazwa(x);.
C. zmienna x otrzyma wartość właściwości nazwa obiektu przedmiot.
Źle. Tak działałby zapis x = przedmiot.nazwa;, z odwróconym kierunkiem przypisania.
D. zostanie utworzona nowa klasa przedmiot z polem nazwa.
Źle. Klasy tworzy się słowem class, a nie przypisaniem.
Zapis
przedmiot.nazwa = x; przypisuje właściwości nazwa obiektu przedmiot wartość zmiennej x. Operator = zawsze kopiuje wartość z prawej strony do miejsca wskazanego po lewej, a kropka wskazuje właściwość obiektu. Jeżeli obiekt nie miał wcześniej właściwości nazwa, JavaScript ją utworzy. Do zapamiętania: po lewej stronie = stoi cel, po prawej źródło; x = przedmiot.nazwa; działa odwrotnie i odczytuje właściwość. Ten sam zapis stosuje się przy elementach strony, na przykład pole.value = x; wpisuje wartość do pola formularza, a akapit.textContent = x; zmienia tekst akapitu. Zamiast kropki można użyć zapisu z nawiasami kwadratowymi: przedmiot['nazwa'] = x; działa identycznie.Problem z tym pytaniem najczęściej wynika z odwrócenia kierunku przypisania. Zmienna x otrzymałaby wartość właściwości przy zapisie
x = przedmiot.nazwa; - tu stoi po prawej, więc jest źródłem, a nie celem. Wywołanie metody wymaga nawiasów: przedmiot.nazwa(x); uruchomiłoby metodę z argumentem x, a w zapisie z pytania nawiasów nie ma. Nowej klasy nie tworzy się przypisaniem; służy do tego słowo class, na przykład class Przedmiot {}. Zapis z pytania jedynie ustawia wartość właściwości istniejącego obiektu: nazwa obiektu przedmiot dostaje wartość zmiennej x. Pomaga stała zasada czytania przypisań w JavaScript, PHP czy C++: wartość płynie zawsze od prawej do lewej. Najpierw obliczana jest prawa strona, potem wynik trafia do miejsca wskazanego po lewej. Dlatego zapis przedmiot.nazwa = x; zmienia obiekt, a x zostaje bez zmian.