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

Użycie zmiennych w konstruktorze

Object Storage Arubacloud
+1 głos
177 wizyt
pytanie zadane 16 kwietnia 2023 w JavaScript przez jasper93 Obywatel (1,310 p.)

Witam, mam pytanie odnośnie konstruktorów, gdy tworzymy właściwości danego obiektu w konstruktorze poprzedzamy je słowem "this", co w efekcie pozwala nam utworzyć pola danego obiektu np:

class Dog{
constructor(name,,age){
this.name = name
this.age = age;
}

Natomiast po co używamy zmiennych w konstruktorach? Z tego co widzę, nie pozwalaja nam utworzyć właściwości danego obiektu(nie rozumiem dlaczego jest to możliwe tylko za pomocą this), więc po co stosujemy np taki zapis:

 

class Dog{
constructor(name,dogColor,age){
this.name = name
let color = dogColor;
this.age = age;
}

zmienna kolor nie będzie właściwością klasy Dog, więc jakie to ma zastosowanie?

1 odpowiedź

+1 głos
odpowiedź 16 kwietnia 2023 przez Comandeer Guru (601,450 p.)
wybrane 17 kwietnia 2023 przez jasper93
 
Najlepsza

W przedstawionym przez Ciebie kodzie nie ma absolutnie żadnego – to niepotrzebna zmienna, niewykorzystywana do niczego. Ale zmienne w konstruktorze mogą być stosowane do przechowywania jakichś tymczasowych wartości, np:

class Dog {
	constructor( name ) {
		const trimmedName = name.trim();

		if ( !trimmedName ) {
			console.error( 'Niepoprawne imię psa' );
		}

		this.name = trimmedName;
	}
}

 

komentarz 17 kwietnia 2023 przez jasper93 Obywatel (1,310 p.)
Dziękuje za wytłumaczenie, a mogę wiedzieć, dlaczego  w moim przypadku dogColor nie jest przypisany do własciwości obiektu color? Wynika to z faktu, że tylko this wiąże daną właściwość z obiektem, czy chodzi o coś innego?
komentarz 17 kwietnia 2023 przez Comandeer Guru (601,450 p.)

Prawdę mówiąc, trudno powiedzieć – nie widzę żadnego powodu, dla którego zmienna color miałaby zostać wgl stworzona. Obstawiałbym jakiś błąd w logice kodu.

komentarz 17 kwietnia 2023 przez jasper93 Obywatel (1,310 p.)

Po prostu chodziło mi o sytuację w której stworzę nowy obiekt np:

const azor = new Dog("Azor","white",15) - zostaną przypisane dwie właściwości, imie i wiek, natomiast kolor już nie, tego dotyczyło moje pytanie. Konstruktor taki sam:

class Dog{
constructor(name,dogColor,age){
this.name = name
let color = dogColor;
this.age = age;
}

 

komentarz 17 kwietnia 2023 przez Comandeer Guru (601,450 p.)

Ok, Tobie chodzi dokładnie o argumenty konstruktora. No tak, bo to, że przekażesz coś do konstruktora jako argument, nie oznacza, że zostanie przypisane do obiektu. Niemniej te zmienne można użyć do konfiguracji obiektu, np.

class Person {
	constructor( age ) {
		if ( age > 50 ) {
			this.isOld = true;
		}
	}
}

Dostajemy wiek osoby, ale ta informacja nie jest dla naszego obiektu istotna, więc zamienia ją na własność isOld. Taka sytuacja się może zdarzyć, gdy dostajemy jakieś dane z zewnątrz (np. jakiegoś API) i nasza klasa mieli to sobie do formatu strawnego dla niej.

Podobne pytania

0 głosów
1 odpowiedź 175 wizyt
pytanie zadane 21 lipca 2019 w PHP przez niezalogowany
+1 głos
2 odpowiedzi 3,911 wizyt
pytanie zadane 30 czerwca 2015 w Java przez Ceki Mądrala (5,310 p.)
0 głosów
1 odpowiedź 387 wizyt

92,575 zapytań

141,424 odpowiedzi

319,649 komentarzy

61,960 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!

...