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?
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?
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:
thiswewnątrz settera odnosi się do obiektuosoba.this.jezykodnosi się do właściwościjezyktego obiektu.nazwato 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óceniathis.jmogł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 dothis.jwewnątrz settera dlajwywoł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.
Pojęcia z tego pytania
- Rekurencja w programowaniuTechnika programistyczna, w której funkcja wywołuje samą siebie w celu rozwiązania mniejszego podproblemu aż do osiągnięcia warunku bazowego (stopu).
- Enkapsulacja / Hermetyzacja i modyfikatory dostępuFilar OOP polegający na ukrywaniu wewnętrznego stanu obiektu przed bezpośrednim dostępem z zewnątrz i udostępnianiu kontrolowanych metod (getterów/setterów).
- Sortowanie ORDER BY i ograniczanie wyników LIMITKlauzule służące do sortowania rekordów rosnąco (ASC) lub malejąco (DESC) oraz ograniczania liczby zwracanych wierszy (stronicowanie).
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.
- #4
Jaki będzie wynik wykonania poniższego kodu JavaScript?
- #114
Obiekt typu array w języku Javascript służy do przechowywania
- #279
W JavaScript wynik operacji jest równy wartości NaN, jeśli skrypt próbował wykonać
- #282
Zapis w języku JavaScript ma za zadanie
- #322
Przedstawiony kod został zapisany w języku JavaScript. W podanej definicji obiektu metodą jest element o nazwie