KWALIFIKACJA INF3 - STYCZEŃ 2019

PYTANIE NR 33.
W programowaniu obiektowym w języku JavaScript użyty w przedstawionym kodzie zapis: this.zawod oznacza
Ilustracja przedstawia fragment kodu w języku JavaScript, który definiuje funkcję konstruktora o nazwie 'Uczen'.
A.
B.
C.
D.
Wyjaśnienie poprawnej odpowiedzi:
Zapis this.zawod oznacza odwołanie do składowej obiektu wskazywanego przez this. W kontekście programowania obiektowego jest to dostęp do członka obiektu, który w pokazanym rozwiązaniu stanowi metodę (funkcję przypisaną do obiektu/instancji), a nie klasę ani konstruktor.

Pełne wyjaśnienie:

Słowo kluczowe this w JavaScript wskazuje obiekt, w którego kontekście wykonywany jest dany fragment kodu (np. instancję klasy albo obiekt, dla którego wywołano funkcję jako metodę). Zapis this.zawod jest więc dostępem do składowej o nazwie zawod należącej do tego obiektu.

W tym pytaniu poprawna odpowiedź to metodę, czyli sytuacja, w której pod nazwą zawod znajduje się funkcja stanowiąca zachowanie obiektu (np. zdefiniowana w klasie lub przypisana do instancji). W praktyce metoda może być później wywoływana (np. przez dodanie nawiasów) albo przekazywana dalej jako referencja do funkcji – nadal pozostaje metodą obiektu, bo jest jego składową typu funkcja.

Dlaczego pozostałe odpowiedzi są błędne?

  • Klasa – klasa jest definicją typu (np. class Osoba { ... }), a nie składową wskazywana przez this.nazwa. Zapis ten nie "oznacza klasy", tylko dostęp do członka konkretnej instancji/obiektu.
  • Konstruktor – konstruktor to specjalna metoda uruchamiana przy tworzeniu obiektu (np. constructor(...) w klasie). Sam zapis this.zawod nie identyfikuje konstruktora; odwołuje się do członka o nazwie zawod, a nie do mechanizmu tworzenia obiektu.
  • Właściwość – właściwość (pole) to składowa przechowująca dane (np. tekst, liczby). W JavaScript metoda jest w praktyce również wartością składowej (funkcją), co bywa źródłem pomyłek. W tym zadaniu chodzi jednak o rozpoznanie, że zawod jest elementem zachowania obiektu, czyli metodą.

Wskazówka egzaminacyjna: gdy analizujesz zapis this.nazwa, zawsze sprawdź w definicji obiektu/klasy, czy nazwa jest przypisana do funkcji (wtedy mówimy o metodzie), czy do danych (wtedy to właściwość/pole). Najczęstszy błąd to automatyczne wybieranie "właściwość" bez weryfikacji definicji.

Dodatkowe pytania

Dodatkowe pytania (FAQ):
this to odwołanie do obiektu, w którego kontekście działa kod (np. instancji klasy lub obiektu wywołującego metodę). Jego wartość zależy od sposobu wywołania funkcji, dlatego w JS często analizuje się kontekst wywołania, a nie samo miejsce definicji.
Sprawdź definicję obiektu/klasy: jeśli pod zawod jest przypisana funkcja, to jest to metoda (zachowanie). Jeśli jest tam tekst/liczba/obiekt, to jest to właściwość (dane). W samym zapisie this.nazwa bez definicji nie widać typu wartości.
Klasa w JS to konstrukcja class Nazwa { ... }, czyli definicja typu. Zapis this.zawod oznacza dostęp do składowej konkretnego obiektu (instancji), a nie do definicji typu. To dwie różne warstwy: instancja (this) vs definicja (class).
To zależy od trybu i sposobu wywołania. W modułach i w trybie ścisłym (strict) this w funkcji wywołanej "luzem" może być undefined. Gdy funkcja jest wywołana jako metoda obiektu, this zwykle wskazuje ten obiekt/instancję.
Nawiasy () oznaczają wywołanie funkcji, ale metoda może być też przekazywana jako referencja (bez wywołania). Jeśli składowa zawod przechowuje funkcję, to mówimy o metodzie; nawiasy są potrzebne dopiero wtedy, gdy chcesz ją uruchomić.
Najczęściej myli się kontekst: zakłada się, że this zawsze wskazuje instancję klasy. Drugi błąd to ignorowanie sposobu wywołania (np. przekazanie metody jako callback bez bindowania). Trzeci błąd to mieszanie pojęć: metoda vs właściwość vs konstruktor.
Konstruktor to specjalna metoda constructor(...) uruchamiana przy tworzeniu obiektu przez new. Zwykła metoda ma dowolną nazwę (np. zawod) i służy do operacji na danych obiektu. Konstruktor inicjalizuje stan, a metody realizują zachowanie.
Operator kropki pozwala odczytać lub ustawić składową obiektu, np. obj.nazwa. To może być zarówno pole z danymi, jak i funkcja (wtedy jest to metoda). Jeśli nazwa składowej jest dynamiczna lub zawiera znaki specjalne, używa się dostępu nawiasowego, np. obj[klucz].
Metoda to funkcja używana jako składowa obiektu (np. this.zawod przechowuje funkcję). Sama funkcja może istnieć niezależnie, ale staje się metodą, gdy jest własnością obiektu i zwykle korzysta z this do pracy na danych obiektu.
Ćwicz na krótkich przykładach: zdefiniuj klasę z konstruktorem, polami i metodami, a potem sprawdzaj w konsoli, co wskazuje this w różnych wywołaniach. Powtarzaj różnice: klasa vs instancja, metoda vs właściwość, wywołanie vs referencja do funkcji.
info

To pytanie poprawnie rozwiązuje 44% zdających egzamin. trudne

Eksperci podkreślają: "Zapis this.zawod oznacza odwołanie do składowej obiektu wskazywanego przez this."

Źródła:

  • MDN Web Docs: "this" (JavaScript) — https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this (dostęp 2026-02-11)
  • MDN Web Docs: "Property accessors" — https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Property_accessors (dostęp 2026-02-11)
  • MDN Web Docs: "Functions" (JavaScript) — https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions (dostęp 2026-02-11)

Materiały:

  • MDN Web Docs: dokumentacja JavaScript (this, obiekty, klasy)
  • Dokumentacja ECMAScript dotycząca semantyki this (rozdziały o wyrażeniach i wywołaniach)
  • Materiały kursowe o OOP w JavaScript (metody vs właściwości, prototypy)

Aktualizacja pytania: 31.03.2026



Aktualizacja pytania: 31.03.2026
📡 Brak połączenia internetowego