• 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?

+1 głos
542 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 (607,980 p.)
Proszę stosować odpowiednią funkcję edytora postów do zamieszczania kodu.

1 odpowiedź

+3 głosów
odpowiedź 18 listopada 2021 przez Comandeer Guru (607,980 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,530 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,650 wizyt
pytanie zadane 6 czerwca 2017 w PHP przez To Ja Początkujący (490 p.)
0 głosów
1 odpowiedź 975 wizyt
0 głosów
1 odpowiedź 294 wizyt
pytanie zadane 31 sierpnia 2020 w JavaScript przez BlueBox Nowicjusz (150 p.)

93,695 zapytań

142,613 odpowiedzi

323,225 komentarzy

63,226 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

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...