Przejdź do głównej zawartości

Bug #090

🪲 Znajdź buga

const obj = {
foo() {
return "foo"
},
get bar() {
return "bar"
},
}

console.log(obj.foo())
console.log(obj.bar())

Obiekty (i klasy) w JavaScript mogą używać tzw. getter'ów.

Czy powyższa konstrukcja składniowa zadziała prawidłowo?

🧪 Rozwiązanie

const obj = {
foo() {
return "foo"
},
get bar() {
return "bar"
},
}

console.log(obj.foo())
console.log(obj.bar)

Getter'y służą do pobierania informacji i powinny być wywoływane jak własności obiektu, a nie metody (czyli bez nawiasów).

Getter'y nie obsługują też parametrów. Nie moglibyśmy stworzyć getter'a get bar(param).

W związku z powyższym, w przykładzie z błędem, w 11 linii zostanie wyrzucony błąd obj.bar is not a function.

Aby go naprawić, wystarczy, że usuniemy nawiasy z wywołania bar.

🎢 Plac zabaw

Otwórz edytor w nowym oknie

📑 Linki

❤️ Podobają Ci się bugi JS?

Podziel się linkiem ze znajomymi:
https://codisity.pl/100-bugow-js