Tworzenie objektu

0

Witam. Uczę się od jakiegoś czasu javascript i mam pytanie jak lepiej tworzyć objekt za pomocą zmiennej czy funckcji?

function Objekt(parametry){}

I potem np. Prototype.
Czy

var Objekt = {jakies właściwośći}

I np. Objekt.nowaWlaściwość.

Jeżeli coś źle napisałem to sorki cały czas się uczę ;)
Pozdrawiam.

0

Jest 2017, mamy ES6 i do obiektów używamy klas.

A do szybkich haxów opcja druga.

Ps. pierwsza i druga nie są równoważne, 1 pozwala Ci produkować coraz to nowe obiekty, druga tworzy pojedynczy obiekt.

1

To zależy. Tworzenie obiektów przez funkcję lub jak kolega wyżej napisał przez klasę jest lepsze jeżeli preferujemy OOP i np tworzymy modele, czy jakieś powiedzmy utility(slider, modal, czy cokolwiek bardziej skomplikowanego).
Drugiej opcji możesz używać jako opcji, które podajesz to funkcji.
np masz stworzoną klasę slidera i dodajesz do niego opcje.

var sliderOptions = {
  wrapper: document.getElementById('main-slider'),
  loop: true
}
var MainSlider = new Slider(sliderOptions );

Podsumowując:

  • Klasy/Funkcje stosujemy do większych obiektów, które możemy stosować wielokrotnie lub wykonują skomplikowane akcje.

1 pozwala Ci produkować coraz to nowe obiekty

  • Obiektów prostych używamy dla mało skomplikowanych obiektów jak np parametry funkcji.

druga tworzy pojedynczy obiekt

Może Cię również zainteresować ten artykuł - https://developer.mozilla.org/bm/docs/Web/JavaScript/Guide/Working_with_Objects

Oczywiście te reguły (jak to często bywa w programowaniu) traktujemy jako wskazówki, nic więcej, bo zdarzają się sytuacje, w których nie ma sensu (albo czasu) się bawić w skomplikowane rzeczy ;)

Tak wygląda moje zdanie na ten temat ale jestem ciekawy opinii innych osób :)

0

Druga opcja też pozwala na tworzenie obiektów, trzeba tylko użyć Object,create. Różnica pojawia się przy prototypowaniu.

0

Druga opcja też pozwala na tworzenie obiektów, trzeba tylko użyć Object,create. Różnica pojawia się przy prototypowaniu.

Nie potrzeba używać Object.create, bo można użyć fabryki:

function createFoo() {
    return {
       jakasZmienna: 123,
           jakasMetoda() {
       } 
    }
}

Albo połączyć kilka podejść (np. fabryka plus Object.create czy jeszcze inaczej). JavaScript jest bardzo elastyczny i ma to wiele zalet,
bo można prawie wszystko zrobić z obiektami.

Z drugiej strony elastyczność ma również taką wadę, że każdy robi inaczej i nie ma jednego standardu - dlatego więc klasy ES6 zdobywają taką popularność, bo pozwalają wreszcie na ustandaryzowanie OOP w JavaScript, żeby każdy pisał tak samo, więc łatwiej zrozumieć potem czyjś kod, oraz IDE mają łatwiejszą robotę, bo jeśli jest jeden standardowy sposób na tworzenie obiektów, to łatwiej potem podpowiadać kod w autocomplete itp.).

Witam. Uczę się od jakiegoś czasu javascript i mam pytanie jak lepiej tworzyć objekt za pomocą zmiennej czy funckcji?

Nie ma lepiej, gorzej, gdyż zależy w jakiej sytuacji, co dokładnie robisz. Warto poznać i nauczyć się stosować różne sposoby tworzenia obiektów, żeby potem używać tego sposobu, który w danej sytuacji najbardziej pasuje.

Jest 2017, mamy ES6 i do obiektów używamy klas.

Składnia klasy w ES6 akurat jest dość uboga i gorsza funkcjonalnie od literałów obiektów (chociaż trochę się to polepsza w kolejnych wersjach JSa), więc nie powiedziałbym, że do obiektów używamy klas.. Chociaż klasy też się przydają, po prostu nie wszędzie i nie zawsze. Jak dla mnie największa zaleta klas ES6 to właśnie ustandaryzowanie wszystkiego, bo funkcjonalnie to jednak fabryka zwracająca literał obiektowy może obecnie o wiele więcej od klasy, łącznie ze zmiennymi w pełni prywatnymi, których jeszcze w klasach nie ma (chociaż mają być w przyszłości https://github.com/tc39/proposal-class-fields ).

1 użytkowników online, w tym zalogowanych: 0, gości: 1