Wpis z mikrobloga

#javascript #js
Mam przykładową klasę

class Player {
constructor(id) {
this.id = id;
}

Potem tworze obiekt tej klasy gdzieśtam
const player = new Player(1);
I teraz pytanie, czy chcąc uzyskać id obiektu player powinienem udawać że nie mam dostępu do wewnętrzej zmiennej i zrobić w klasie metodę

getId() { return this.id }
czy po prostu pisać

const playerId = player.id;
  • 13
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

via Wykop Mobilny (Android)
  • 4
@Name_in_progress: udawaj, tak powinna działać hermetyzacja i dodatkowo takie podejście jest bardziej praktyczne (jak będziesz chcieć dorzucić jakieś side effecty do gettera/settera to zrobisz to w jednym miejscu a nie w tysiącu)
  • Odpowiedz
@Name_in_progress: Jeżeli chcesz to robić w ES5 to zainteresuj się wzorcem projektowym o nazwie "Revealing Module".
Wtedy będziesz miał enkapsulację i nic nie musisz udawać bo nie masz dostępu do pól obiektu. Musisz wtedy utworzyć metody (getery setery) ale uwaga na przekazywanie zmiennych z modułu bo w JS nie ma referencji do prymitywów (Number, String, boolean itd.)
  • Odpowiedz
@rbielawski: Właśnie te gettery i settery z ES6 wydają mi się zaburzać koncept troche bo odwołuje sie do nich tak jak bezposrednio do właściwosci czyli obiekt.właściwość, nie widać na pierwszy rzut oka że pod tym moze sie kryć jakaś funkcja
  • Odpowiedz
via Wykop Mobilny (Android)
  • 0
@veranoo: setter w sumie chyba nie może być nazwany pure function, nawet bez side effectów ( ͡° ͜ʖ ͡°) to był tylko przykład
  • Odpowiedz