Przejdź do treści głównej
INF.03Pytanie #1032 z 1558js-funkcje-i-struktury-danych

Na listingu kodu JavaScript w wykropkowanej części definicji obiektu osoba należy wpisać kod, który prawidłowo obsłuży instrukcję osoba.j = "PL"; Który to będzie kod?

Opcje odpowiedzi:
A
return this.j;
B
this.jezyk = nazwa;
Prawidłowa
C
this.j = nazwa;
D
return this.jezyk;
Reklama

Wyjaśnienie i uzasadnienie dydaktyczne

Poprawna odpowiedź: B (this.jezyk = nazwa;)

this.jezyk = nazwa;.

Przedstawiony fragment kodu JavaScript definiuje obiekt osoba z właściwościami imie, jezyk oraz setterem dla właściwości o nazwie j. javascript var osoba = { imie: "Jan", jezyk: "EN", set j(nazwa) { // Setter dla właściwości 'j' // ... wykropkowana część ... } }; Instrukcja osoba.j = "PL"; próbuje przypisać wartość "PL" do właściwości j obiektu osoba. Kiedy taka operacja przypisania jest wykonywana na właściwości, dla której zdefiniowano setter, to właśnie kod settera jest wywoływany. Wartość przypisywana ("PL" w tym przypadku) staje się argumentem settera (tutaj nazwanym nazwa).

Celem settera jest zazwyczaj ustawienie wartości jakiejś wewnętrznej właściwości obiektu lub wykonanie innej logiki związanej z ustawianiem tej "wirtualnej" właściwości. W tym kontekście, logiczne jest, że setter dla j powinien modyfikować właściwość jezyk obiektu.

Dlatego kod this.jezyk = nazwa; jest poprawny:

  • this wewnątrz settera odnosi się do obiektu osoba.
  • this.jezyk odnosi się do właściwości jezyk tego obiektu.
  • nazwa to argument przekazany do settera (czyli "PL").
  • Instrukcja przypisuje wartość "PL" do właściwości osoba.jezyk.

Dlaczego pozostałe opcje są nieprawidłowe?

  • A: return this.j; — Setter nie powinien niczego zwracać (jego celem jest ustawienie wartości). Próba zwrócenia this.j mogłaby prowadzić do rekurencyjnego wywołania settera, jeśli nie ma odpowiadającego gettera i właściwości podkładowej.
  • C: this.j = nazwa; — To spowodowałoby nieskończoną pętlę rekurencyjną. Próba przypisania wartości do this.j wewnątrz settera dla j wywołałaby ten sam setter ponownie. Setter powinien modyfikować inną, rzeczywistą właściwość obiektu (np. jezyk) lub właściwość "prywatną" (np. z prefiksem _j).
  • D: return this.jezyk; — Jak w opcji A, setter nie powinien zwracać wartości.

Chcesz poćwiczyć całą kwalifikację INF.03?

Egzamin próbny na czas, nauka działami, losowe pytanie albo przegląd całej bazy — wszystko w przeglądarce i bez zakładania konta.

Rozwiąż w Quizie

Pojęcia z tego pytania

Cały słownik INF03
Reklama

Podobne pytania z działu „Js funkcje i struktury danych”

Ten sam obszar materiału z kwalifikacji INF.03. W całej bazie znajdziesz 42 pytań z tego działu.