• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Szybkie pytanie. Czy można to już nazwać programowaniem obiektowym w js?

VPS Starter Arubacloud
+1 głos
318 wizyt
pytanie zadane 18 listopada 2021 w JavaScript przez avatujo Nowicjusz (130 p.)
edycja 18 listopada 2021 przez Comandeer
const btns = document.querySelectorAll('.btn')

const wrapper = document.querySelector('.wrapper')



const Color = class{

    constructor(color) {

        let _color = color;

        this.getColor = () => _color

    }



    setColor = () => {

         wrapper.style.backgroundColor = this.getColor()

       

    }

}

const red = new Color('red')

const blue = new Color('lightblue')

const green = new Color('lightgreen')

btns[0].addEventListener('click',red.setColor)

btns[1].addEventListener('click',blue.setColor)

btns[2].addEventListener('click',green.setColor)

 

komentarz 18 listopada 2021 przez Comandeer Guru (599,730 p.)
Proszę stosować odpowiednią funkcję edytora postów do zamieszczania kodu.

1 odpowiedź

+3 głosów
odpowiedź 18 listopada 2021 przez Comandeer Guru (599,730 p.)

Jak się przymknie jedno oko i mocno zmruży drugie, to tak. W końcu masz obiekt zawierający dane i jakieś zachowanie. Tylko że absolutnie nic by się nie stało, gdybyś zamienić klasę Color na prostą funkcję, która ustawia tło na podany jej kolor. Powiedziałbym nawet, że kod stałby się przez to prostszy.

No i nazwy samej klasy oraz metod nie oddają tego, co ta klasa tak naprawdę robi. Bo nie reprezentuje jako tako koloru, tylko pozwala zmienić tło jednego, konkretnego elementu. O wiele sensowniej byłoby, gdyby metoda setColor() przyjmowała element, jakiemu ma zmienić tło, jako parametr.

Cała koncepcja z getColor() i setColor() ma sens, gdy takie metody robią faktycznie to, na co wskazuje nazwa – pobierają i ustawiają wartość pola color klasy. Tutaj getColor() faktycznie to robi, ale setColor() już robi coś innego, przez co psuje tak naprawdę oczekiwania usera. W tak prostym przypadku równie dobrze można olać gettery i settery i po prostu pozwalać na bezpośrednie odczytywanie pola color. Dodatkowo, jak już wspominałem, klasa Color powinna reprezentować kolor, nie zaś ustawiać tło jakiemuś elementowi.

2
komentarz 18 listopada 2021 przez Tomek Sochacki Ekspert (227,510 p.)

Jak się przymknie jedno oko i mocno zmruży drugie, to tak.

:D muszę sobie zapisać ten tekst, czuję że nie raz się przyda przy niektórych CR :)

Podobne pytania

0 głosów
1 odpowiedź 1,041 wizyt
pytanie zadane 6 czerwca 2017 w PHP przez To Ja Początkujący (490 p.)
0 głosów
1 odpowiedź 623 wizyt
0 głosów
1 odpowiedź 146 wizyt
pytanie zadane 31 sierpnia 2020 w JavaScript przez BlueBox Nowicjusz (150 p.)

92,455 zapytań

141,263 odpowiedzi

319,100 komentarzy

61,854 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Akademia Sekuraka 2024 zapewnia dostęp do minimum 15 szkoleń online z bezpieczeństwa IT oraz dostęp także do materiałów z edycji Sekurak Academy z roku 2023!

Przy zakupie możecie skorzystać z kodu: pasja-akademia - użyjcie go w koszyku, a uzyskacie rabat -30% na bilety w wersji "Standard"! Więcej informacji na temat akademii 2024 znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...