JavaScript je uveljavljen jezik, vendar je v ES6 dodal le podporo za klasično objektno usmerjeno programiranje (OOP). Dokler ni dodal funkcij, kot so deklaracije razredov, je JavaScript obravnaval OOP z uporabo manj znane paradigme, ki temelji na prototipu. Z obema pristopoma pa lahko ustvarite zapletene aplikacije, ki uporabljajo funkcije, ki temeljijo na objektih.

Konstruktor v prototipnem JavaScriptu izgleda podobno kot katera koli druga funkcija. Glavna razlika je v tem, da lahko to funkcijo konstruktorja uporabite za ustvarjanje predmetov.

Kaj je konstruktor v JavaScriptu?

Konstruktorji so eden od temeljne koncepte v objektno usmerjenem programiranju. Konstruktor je funkcija, ki jo lahko uporabite za ustvarjanje primerka predmeta. Poleg ustvarjanja novega predmeta konstruktor določa lastnosti in vedenja, ki mu bodo pripadala.

Sintaksa konstruktorja

funkcijoNameOfConstructor() {
this.property1 = "Lastnina1";
this.property2 = "Lastnina2";
this.property3 = "Lastnina3";
}

Konstruktor lahko ustvarite z

instagram viewer
funkcijo ključna beseda, saj je v bistvu kot katera koli druga funkcija. Vendar se konstruktorji držijo naslednjih konvencij:

  1. Če jih želite razlikovati od drugih funkcij, uporabite ime za svoj konstruktor, ki se začne z veliko začetnico.
  2. Konstruktorji uporabljajo to ključno besedo drugače. Znotraj konstruktorja, to se nanaša na nov objekt, ki ga bo ustvaril konstruktor.
  3. Za razliko od funkcij JavaScripta konstruktorji definirajo lastnosti in vedenja namesto vračanja vrednosti.

Uporaba konstruktorja za ustvarjanje novih predmetov

V JavaScriptu je uporaba konstruktorja za ustvarjanje predmeta lahka naloga. Tukaj je preprost konstruktor s klicem, ki mu sledi:

funkcijoštudent() {
to.ime = "Gloria";
this.gender = "ženska";
to.starost = 19;
}

pustiti Študentka = novo Študent();

V tem primeru Študentka je predmet, ustvarjen iz študent konstruktor. Uporabi novo ključno besedo za klic funkcije kot konstruktorja. Ta ključna beseda pove JavaScriptu, naj ustvari nov primerek študent. Te funkcije ne smete klicati brez novo ključna beseda, ker to znotraj konstruktorja ne bo kazalo na nov objekt. Po izgradnji, Študentka ima vse lastnosti študent. Do teh lastnosti lahko dostopate in jih spreminjate tako kot pri katerem koli drugem predmetu.

Pomembne stvari, ki jih morate vedeti o konstruktorjih JavaScript

Delo s konstruktorji je lahko tako naporno, a hkrati lahko. Tukaj je nekaj pomembnih stvari, ki jih mora vsak razvijalec vedeti o delu s konstruktorji.

Uporaba konstruktorjev z argumenti

Konstruktor lahko razširite za sprejemanje argumentov. To je zelo pomembno, če želite napisati odzivno, prilagodljivo kodo.

Kadarkoli ustvarite predmet iz konstruktorja, bo objekt podedoval vse lastnosti, deklarirane v konstruktorju. Na primer, Študentka ki ste jih ustvarili zgoraj, bodo imeli lastnosti ime, spol, in starost s fiksnimi začetnimi vrednostmi. Čeprav lahko vsako lastnost spremenite ročno, bi bilo veliko dela, če bi pisali program z uporabo številnih objektov.

Na srečo lahko konstruktorji JavaScript sprejmejo parametre, tako kot katera koli druga funkcija. Lahko spremenite študent konstruktor za sprejem dveh parametrov:

funkcijoštudent(ime, spol) {
to.name = ime;
to.gender = spol;
to.starost = 19;
}

Vsi predmeti, ustvarjeni iz zgoraj navedenega, bodo imeli starost nastavljena 19. Svoj konstruktor lahko oblikujete na ta način, če obstaja lastnost, za katero želite, da jo imajo vsi predmeti.

Zdaj lahko definirate edinstvene objekte iz istega konstruktorja s podajanjem različnih argumentov.

Zaradi argumentov so konstruktorji bolj prilagodljivi. Prihranijo čas in spodbujajo čisto kodo.

Definiranje objektnih metod

Metoda je lastnost objekta, ki je funkcija. Metode izboljšajo vašo kodo v OOP, saj vašim objektom dodajo različna vedenja. Tukaj je primer:

funkcijoštudent(ime, spol) {
to.name = ime;
to.gender = spol;
to.starost = 19 ;

to.sayName = funkcijo () {
vrnitev`Ime mi je ${name}`;
}
}

Zgornje dodaja funkcijo reciName konstruktorju.

Recimo, da uporabite ta konstruktor za ustvarjanje predmeta, ki ga shranite v spremenljivko, Študentka. To funkcijo lahko nato pokličete s spodnjo kodo:

Študentka.sayName()

Prototip

Prej smo ustvarjali študent na način, da bodo vsi njegovi primerki imeli an starost nepremičnine v vrednosti 19. Posledica tega bo podvojena spremenljivka za vsako študent primerek, ki ga ustvarite.

Da bi se izognil temu podvajanju, JavaScript uporablja koncept prototipov. Vsi objekti, ustvarjeni iz konstruktorja, si delijo lastnosti njegovega prototipa. Dodate lahko starost premoženje do študent prototip, kot je prikazano spodaj:

Student.prototype.age = 19;

S tem se vsi primeri študent bo imel starost premoženje. Razglašanje lastnosti prototipa je način za zmanjšanje podvojene kode v vaši aplikaciji. Zaradi tega je vaša koda čim bolj standardna.

Lastnost prototipa je lahko predmet

Lastnosti prototipa lahko dodate posamično, kot je razloženo zgoraj. Če pa morate dodati veliko lastnosti, je to lahko neprijetno.

Namesto tega lahko vse lastnosti, ki jih potrebujete, vključite v nov objekt. S tem boste nastavili vse lastnosti hkrati. Na primer:

Student.prototype = {
starost: 19,
dirka: "Bela",
invalidnost: "Noben"
}

Ne pozabite nastaviti konstruktor pri nastavljanju prototipov novemu objektu.

Student.prototype = { 
konstruktor: študent,
starost: 19,
dirka: "Bela",
invalidnost: "Noben"
}

S to lastnostjo lahko preverite, katera funkcija konstruktorja je ustvarila primerek.

Supertipi in dedovanje

Dedovanje je metoda, ki jo programerji uporabljajo za zmanjšanje napak v svojih aplikacijah. To je način, kako se držati Ne ponavljaj se (SUHO) načelo.

Recimo, da imate dva konstruktorja—študent in učiteljica— ki imata dve podobni lastnosti prototipa.

Student.prototype = { 
konstruktor: študent,

reciName: funkcijo () {
vrnitev`Ime mi je ${name}`;
}
}

Teacher.prototype = {
konstruktor: učitelj,

reciName: funkcijo () {
vrnitev`Ime mi je ${name}`;
}
}

Oba konstruktorja definirata reciName metoda, enako. Da bi se izognili temu nepotrebnemu podvajanju, lahko ustvarite a supertip.

funkcijoIndividualDetails(){};

IndividualDetails.prototype = {
konstruktor: IndividualDetails,

reciName: funkcijo () {
vrnitev`Ime mi je ${name}`;
}
};

Nato lahko odstranite reciName od obeh konstruktorjev.

Če želite podedovati lastnosti nadtipa, uporabite Object.create(). Prototip obeh konstruktorjev nastavite na primerek nadtipa. V tem primeru nastavimo študent in učiteljica prototipov v primerek IndividualDetails.

Tukaj je:

Študent.prototip = Objekt.create (IndividualDetails.prototype);
Učitelj.prototip = Objekt.create (IndividualDetails.prototype);

S tem, študent in učiteljica podedujejo vse lastnosti nadtipa, IndividualDetails.

Tako vadite DRY v OOP z uporabo supertipov.

Konstruktorji spreminjajo igre

Konstruktorji so ključna komponenta JavaScripta in obvladovanje njihove funkcionalnosti je ključnega pomena za razvoj aplikacij OOP JavaScript. S konstruktorjem lahko ustvarite predmete, ki imajo skupne lastnosti in metode. Za definiranje hierarhije objektov lahko uporabite tudi dedovanje.

V ES6 lahko uporabite razred ključna beseda za definiranje klasičnih objektno usmerjenih razredov. Ta različica JavaScripta podpira tudi a konstruktor ključna beseda.