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

zamiana es5 na es6

VPS Starter Arubacloud
+1 głos
350 wizyt
pytanie zadane 29 listopada 2017 w JavaScript przez UltraSF Stary wyjadacz (11,740 p.)

Panowie szybkie pytanie mam:

var xyx = function() {
    //jakiś tam kod konstruktora
}

xyz.DEFAULTS = {
    opcja1 = 23123
    opcja2 = 23123123
}

xyz.prototype.qwe = function() {
    //jakis kod metody
}

//i teraz zmieniam to na es6
class xyx
{
    constructor()
    {
         //jakiś tam kod konstruktora
    }

   qwe()
    {
         //jakiś kod metody
    }
}

ale jak przenieść DEFAULTS? :O 

 

1 odpowiedź

+1 głos
odpowiedź 29 listopada 2017 przez Ivan Maniak (60,650 p.)
wybrane 1 grudnia 2017 przez UltraSF
 
Najlepsza

Możesz utworzyć getter dla DEFUALTS:

class Foo
{
  get DEFAULTS() { return {} };
}

No i jeżeli one nie będą się zmieniać to możesz dorzucić static.

class Foo
{
  static get DEFAULTS() { return {} };
}

Jest też opcja dodania DEFAULTS w konstruktorze (i w innych metodach) jako zmiennej. np. 
 

this.DEFUALTS = {}

 

komentarz 29 listopada 2017 przez Tomek Sochacki Ekspert (227,510 p.)
Niedługo możliwe, że w standardzie będziemy mieli prywatne właściwości i metody:

https://github.com/tc39/proposal-private-methods

ale jeszcze trzeba chwilę poczekać...
komentarz 29 listopada 2017 przez Comandeer Guru (599,730 p.)
Te prywatne właściwości mnie tak bolą – przecież ta składnia jest ohydna…

Co do dodawania własności do konstruktora: nie działa to do końca tak, jak właściwości statyczne. Właściwości statyczne bowiem są dziedziczone.
komentarz 29 listopada 2017 przez Tomek Sochacki Ekspert (227,510 p.)
Może i tak... ale z pewnością się przydadzą, a do składni się przyzwyczaimy :)
komentarz 29 listopada 2017 przez Ivan Maniak (60,650 p.)
Faktycznie, nie pomyślałem o tym.

Najchętniej to zostałbym przy _, jeżeli chodzi o prywatne właściwości. Pewnie powstanie jakaś biblioteka, która będzie zmieniała _ na #, więc jeżeli nie będę mógł się przyzwyczaić to pozostanę przy _, a przynajmniej w projektach, które sam będę chciał rozwijać :)

Nie interesowałem się tym ani nic, ale w sumie ciekawi mnie co stało na przeszkodzie, aby  przy deklarowaniu zmiennej, deklarować czy ma być prywatna lub po prostu stworzenia listy, które zmienne mają być prywatne (np. tak jak w C++).
komentarz 29 listopada 2017 przez Comandeer Guru (599,730 p.)
Może fakt, że JS nigdy nie miał być językiem OOP w tradycyjnym tego słowa znaczeniu i to, co obecnie się z nim dzieje, to bardziej przymus niż naturalny rozwój? :P
komentarz 29 listopada 2017 przez Ivan Maniak (60,650 p.)
No jeżeli to jest przymus, to nie mam pojęcia jak mógłbym wyglądać naturalny rozwój JSa. No ale "programuję" od 4 lat, więc o to trudno o taką wiedzę :)

Ale jeżeli coś się robi to warto zrobić to porządnie. Szczególnie, gdy zmiana tego będzie trudna.
komentarz 29 listopada 2017 przez Schizohatter Nałogowiec (39,600 p.)
To jest ten moment, kiedy starają się wymyślać koło na nowo i zamiast zastosować słowo kluczowe private przed definicją (jak w większości języków), lub "wszystko poniżej private jest private" (jak w Ruby), to dodają jakieś cudaczne znaczki. A trzeba przyznać, że wygląda to okropnie.

Da się robić całkowicie prywatne metody, wykorzystując moduły i .call(this), ale wywoływanie za każdym razem .call(this) nie jest przyjemne.
komentarz 30 listopada 2017 przez Comandeer Guru (599,730 p.)

No jeżeli to jest przymus, to nie mam pojęcia jak mógłbym wyglądać naturalny rozwój JSa.

JS powstał w roku 1995, gdy Sieć to był zbiór stron z tekstem, tekstem i jeszcze raz GIF-ami. Wtedy JS faktycznie służył do tworzenia animowanego śniegu. Obecnie JS jest potężnym językiem ogólnego użytku, który zaczyna wykraczać poza obszar zaawansowanych aplikacji webowych. Z tego też powodu język musi być dynamicznie rozwijany, czego pokłosiem są nowe wersje raz do roku – co ma swoje plusy, jak i minusy. Minusem zdecydowanie jest to, że JS próbuje się przystosować do jego nowej roli lingua franca – i to nie tylko Sieci. To mam na myśli pod wymuszonym rozwojem. 

Podobne pytania

0 głosów
1 odpowiedź 157 wizyt
pytanie zadane 26 czerwca 2017 w JavaScript przez Sławek Obywatel (1,270 p.)
0 głosów
2 odpowiedzi 153 wizyt
pytanie zadane 23 czerwca 2017 w JavaScript przez niezalogowany
0 głosów
1 odpowiedź 375 wizyt
pytanie zadane 6 kwietnia 2018 w JavaScript przez dziedziu Początkujący (370 p.)

92,454 zapytań

141,263 odpowiedzi

319,099 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!

...