JavaScript on väljakujunenud keel, kuid see lisas ES6-s ainult klassikalise objektorienteeritud programmeerimise (OOP) toe. Kuni selliste funktsioonide nagu klassideklaratsiooni lisamiseni käsitles JavaScript OOP-i vähemtuntud prototüübipõhise paradigma abil. Kummagi lähenemisviisiga saate aga luua keerukaid rakendusi, mis kasutavad objektipõhiseid funktsioone.

Prototüüpse JavaScripti konstruktor näeb välja nagu mis tahes muu funktsioon. Peamine erinevus seisneb selles, et saate seda konstruktorifunktsiooni kasutada objektide loomiseks.

Mis on konstruktor JavaScriptis?

Konstruktorid on üks objektorienteeritud programmeerimise põhimõisted. Konstruktor on funktsioon, mida saate kasutada objekti eksemplari loomiseks. Lisaks uue objekti loomisele määrab konstruktor omadused ja käitumised, mis sellele kuuluvad.

Konstruktori süntaks

funktsiooniNameOfConstructor() {
see.omadus1 = "Kinnistu 1";
see.omadus2 = "Vara 2";
see.omadus3 = "Kinnistu 3";
}

Saate luua konstruktori funktsiooni märksõna, kuna see on sisuliselt

instagram viewer
nagu iga teinegi funktsioon. Konstruktorid järgivad siiski järgmisi konventsioone:

  1. Nende teistest funktsioonidest eristamiseks kasutage oma konstruktori nime, mis algab suure tähega.
  2. Konstruktorid kasutavad see märksõna erinevalt. Konstruktori sees, see viitab uuele objektile, mille ehitaja loob.
  3. Erinevalt JavaScripti funktsioonidest määratlevad konstruktorid väärtuste tagastamise asemel atribuudid ja käitumised.

Konstruktori kasutamine uute objektide loomiseks

JavaScriptis on objekti loomiseks konstruktori kasutamine lihtne ülesanne. Siin on lihtne konstruktor, millele järgneb kutse:

funktsiooniÜliõpilane() {
see.nimi = "Gloria";
see.sugu = "Naine";
see.vanus = 19;
}

lase naisüliõpilane = uus Õpilane();

Selles näites naisüliõpilane on objekt, mis on loodud Üliõpilane konstruktor. Kasuta uus märksõna funktsiooni konstruktorina kutsumiseks. See märksõna käsib JavaScriptil luua uue eksemplari Üliõpilane. Te ei tohiks seda funktsiooni kutsuda ilma uus märksõna, sest see konstruktori sees ei osuta uuele objektile. Pärast ehitamist, naisüliõpilane omab kõiki omadusi Üliõpilane. Saate neile atribuutidele juurde pääseda ja neid muuta samamoodi nagu mis tahes muu objekti puhul.

Oluline teave JavaScripti konstruktorite kohta

Konstruktoritega töötamine võib olla nii väsitav ja samal ajal lihtne ülesanne. Siin on mõned olulised asjad, mida iga arendaja peaks konstruktoritega töötamise kohta teadma.

Konstruktorite kasutamine argumentidega

Argumentide vastuvõtmiseks saate konstruktorit laiendada. See on väga oluline, kui soovite kirjutada reageerivat ja paindlikku koodi.

Kui loote objekti konstruktorist, pärib objekt kõik konstruktoris deklareeritud omadused. Näiteks naisüliõpilane Eespool loodud omadused on olemas nimi, sugu, ja vanus fikseeritud algväärtustega. Kuigi saate iga atribuuti käsitsi muuta, oleks paljusid objekte kasutades programmi kirjutamisel palju tööd.

Õnneks saavad JavaScripti konstruktorid parameetreid aktsepteerida, nagu kõik muud funktsioonid. Saate muuta Üliõpilane konstruktor aktsepteerima kahte parameetrit:

funktsiooniÜliõpilane(nimi, sugu) {
see.nimi = nimi;
see.gender = sugu;
see.vanus = 19;
}

Kõigil ülaltoodust loodud objektidel on vanus seatud 19. Saate oma konstruktori sellisel viisil kujundada, kui soovite, et kõik objektid oleksid olemas.

Nüüd saate määratleda unikaalseid objekte samast konstruktorist, sisestades erinevaid argumente.

Argumendid muudavad konstruktorid paindlikumaks. Need säästavad aega ja soodustavad puhast koodi.

Objektimeetodite määratlemine

Meetod on objekti omadus, mis on funktsioon. Meetodid täiustavad teie koodi OOP-is, kuna see lisab teie objektidele erineva käitumise. Siin on näide:

funktsiooniÜliõpilane(nimi, sugu) {
see.nimi = nimi;
see.gender = sugu;
see.vanus = 19 ;

see.sayName = funktsiooni () {
tagasi`Minu nimi on ${name}`;
}
}

Ülaltoodu lisab funktsiooni ütleNimi konstruktorile.

Oletame, et kasutate seda konstruktorit objekti loomiseks, mille salvestate muutujasse, naisüliõpilane. Seejärel saate sellele funktsioonile helistada alloleva koodiga:

naisüliõpilane.sayName()

Prototüüp

Varem lõime Üliõpilane viisil, et kõigil selle eksemplaridel on vanus vara väärtusega 19. Selle tulemuseks on iga muutuja dubleerimine Üliõpilane teie loodud eksemplar.

Selle dubleerimise vältimiseks kasutab JavaScript prototüüpide kontseptsiooni. Kõik konstruktorist loodud objektid jagavad selle prototüübi omadusi. Saate lisada vanus vara juurde Üliõpilane prototüüp, nagu allpool näidatud:

Õpilane.prototüüp.vanus = 19;

Seda tehes kõik juhtumid Üliõpilane saab olema vanus vara. Deklareerimine prototüübi omadused on viis oma rakenduses dubleeriva koodi vähendamiseks. See muudab teie koodi võimalikult standardseks.

Prototüübi vara võib olla objekt

Prototüübi atribuute saate lisada ükshaaval, nagu eespool selgitatud. Kuid kui teil on lisada palju omadusi, võib see olla ebamugav.

Alternatiivina saate uues objektis sisaldada kõiki vajalikke omadusi. Seda tehes määrate kõik atribuudid korraga. Näiteks:

Student.prototype = {
vanus: 19,
rass: "Valge",
puue: "Mitte ühtegi"
}

Ärge unustage seadistada konstruktor prototüüpide seadistamisel uuele objektile.

Student.prototype = { 
konstruktor: üliõpilane,
vanus: 19,
rass: "Valge",
puue: "Mitte ühtegi"
}

Selle atribuudi abil saate kontrollida, milline konstruktorifunktsioon eksemplari lõi.

Supertüübid ja pärand

Pärand on meetod, mida programmeerijad kasutavad oma rakendustes esinevate vigade vähendamiseks. See on viis, kuidas kinni pidada Ära korda ennast (KUIV) põhimõte.

Oletame, et teil on kaks konstruktorit –Üliõpilane ja Õpetaja- millel on kaks sarnast prototüübi omadust.

Student.prototype = { 
konstruktor: üliõpilane,

sayName: funktsiooni () {
tagasi`Minu nimi on ${name}`;
}
}

Teacher.prototype = {
konstruktor: Õpetaja,

sayName: funktsiooni () {
tagasi`Minu nimi on ${name}`;
}
}

Mõlemad konstruktorid määratlevad ütleNimi meetodil identselt. Selle tarbetu dubleerimise vältimiseks saate luua a supertüüp.

funktsiooniIndividuaalsed üksikasjad(){};

IndividualDetails.prototype = {
konstruktor: individuaalsed üksikasjad,

sayName: funktsiooni () {
tagasi`Minu nimi on ${name}`;
}
};

Seejärel saate eemaldada ütleNimi mõlemalt konstruktorilt.

Supertüübi omaduste pärimiseks kasutage Object.create(). Määrate mõlema konstruktori prototüübiks supertüübi eksemplari. Sel juhul määrame Üliõpilane ja Õpetaja prototüübid IndividualDetails'i eksemplarile.

Siin see on:

Õpilane.prototüüp = Objekt.create (IndividualDetails.prototype);
Õpetaja.prototüüp = Objekt.create (IndividualDetails.prototype);

Seda tehes Üliõpilane ja Õpetaja pärida kõik supertüübi omadused, Individuaalsed üksikasjad.

Nii harjutatakse DRY-d OOP-is supertüüpide abil.

Konstruktorid on mängu muutjad

Konstruktorid on JavaScripti põhikomponent ja nende funktsionaalsuse valdamine on OOP JavaScripti rakenduste arendamiseks ülioluline. Konstruktori abil saate luua objekte, millel on ühised omadused ja meetodid. Pärimist saate kasutada ka objektide hierarhiate määratlemiseks.

ES6-s saate kasutada klass märksõna klassikaliste objektorienteeritud klasside määratlemiseks. See JavaScripti versioon toetab ka a konstruktor märksõna.