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:
Kopiuj
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 ).