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

Programowanie obiektowe - Kiedy pisać klasę/konstruktor dla jednego obiektu?

Object Storage Arubacloud
+1 głos
296 wizyt
pytanie zadane 31 października 2016 w JavaScript przez iozeke Obywatel (1,820 p.)
edycja 31 października 2016 przez iozeke

Tak jak w temacie. Od jakiegoś czasu zastanawia mnie, czy trzeba dla każdego pojedynczego obiektu definiować konstruktor (aktualnie piszę w ES5), kiedy moim zadniem prościej jest od razu stworzyć obiekt o odpowiednich metodach i parametrach, bez zbędnego trzaskania kodu. Spróbuję zwizualizować to poniżej:

1.

function Bohater(poziom, ekwipunek){
    this.poziom = poziom;
    this.ekwipunek = ekwipunek;
}

hero = new Bohater(1, []);

przecież sprawniej byłoby napisać tak:

var hero = {
     poziom: 1,
     ekwipunek: []
}

 

Oczywiście od początku mamy założenie, że bohater ma określone parametry na początku i jest tylko jeden.

komentarz 31 października 2016 przez Fenix Nałogowiec (26,750 p.)
a moze by tak zamiast var uzyc const?
komentarz 31 października 2016 przez iozeke Obywatel (1,820 p.)
Nie chodziło mi o to, że wartości obiektu nie będą się już zmieniać, ale o to , że są z góry określone na starcie gry
komentarz 31 października 2016 przez Fenix Nałogowiec (26,750 p.)
Ojj "wartosci" jak je nazwales moga sie zmienic, sam obiekt juz nie.
komentarz 31 października 2016 przez iozeke Obywatel (1,820 p.)
no dzieki za tipa, ale nie o to mi chodzilo
1
komentarz 31 października 2016 przez ScriptyChris Mędrzec (190,190 p.)

Zapis z użyciem konstruktora stosuje się wtedy, gdy wiesz że będziesz tworzył wiele instancji jakiegoś obiektu oraz będziesz obiekt rozbudowywać o pola i metody. Zapis literalny jest krótszy i stosuje się go, gdy raczej tworzysz dany obiekt raz. Chociaż można w pętli sobie zrobić wiele obiektów, które umieścisz np. w tablicy:

var array = [];

for ( var i = 0; i < 5; i++ ) {
  var eq = [];

  for ( var j = 0; j < i; j++ ) {
    eq[ j ] = j;
  }

  array.push( {
       poziom: i,
       ekwipunek: eq
  } );
}

console.log( array ); // [Object, Object, Object, Object, Object]
console.log( array[3] ); // Object {poziom: 3, ekwipunek: Array[3]}
console.log( array[3].ekwipunek ); // [0, 1, 2]

Lecz sam przyznasz, że jest to mniej czytelny zapis niż tworzenie instancji przy pomocy konstruktora.

1 odpowiedź

0 głosów
odpowiedź 31 października 2016 przez Ivan Maniak (60,650 p.)

Czy trzeba? Nie, nie trzeba.

To czy piszesz obiektowo, czy też nie to twoja sprawa, ALE gdy piszemy obiektowo to jest po prostu łatwiej rozbudować naszą klasę.

Co do samego przykładu to możesz skorzystać z trzeciej opcji, domyślnych parametrów

1
komentarz 31 października 2016 przez Magicone Nałogowiec (45,100 p.)
Rozbudować, testować, wyodrębnić, narzucić odpowiedni poziom abstrakcji... Długo by wymieniać. ;)

Podobne pytania

0 głosów
1 odpowiedź 294 wizyt
0 głosów
1 odpowiedź 450 wizyt
0 głosów
2 odpowiedzi 269 wizyt
pytanie zadane 23 września 2023 w C# przez sisOOO Obywatel (1,370 p.)

92,556 zapytań

141,404 odpowiedzi

319,563 komentarzy

61,942 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

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy 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!

...