JavaScript ir izveidota valoda, taču tā tikai pievienoja atbalstu klasiskajai objektorientētai programmēšanai (OOP) ES6. Līdz brīdim, kad tika pievienotas tādas funkcijas kā klašu deklarācijas, JavaScript apstrādāja OOP, izmantojot mazāk zināmu uz prototipu balstītu paradigmu. Tomēr, izmantojot jebkuru pieeju, jūs varat izveidot sarežģītas lietojumprogrammas, kurās tiek izmantoti uz objektu balstīti līdzekļi.

Prototipiskā JavaScript konstruktors izskatās līdzīgi jebkurai citai funkcijai. Galvenā atšķirība ir tā, ka varat izmantot šo konstruktora funkciju, lai izveidotu objektus.

Kas ir konstruktors JavaScript?

Konstruktori ir viens no objektorientētās programmēšanas pamatjēdzieni. Konstruktors ir funkcija, ko var izmantot, lai izveidotu objekta gadījumu. Papildus jauna objekta izveidei konstruktors norāda tam piederošās īpašības un uzvedību.

Konstruktora sintakse

funkcijuNameOfConstructor() {
šo.īpašums1 = "Īpašums1";
šo.īpašums2 = "Īpašums2";
šo.īpašums3 = "Īpašums3";
}

Jūs varat izveidot konstruktoru ar

funkciju atslēgvārds, jo tas būtībā ir tāpat kā jebkura cita funkcija. Tomēr konstruktori ievēro šādas konvencijas:

  1. Lai tās atšķirtu no citām funkcijām, izmantojiet konstruktora nosaukumu, kas sākas ar lielo burtu.
  2. Konstruktori izmanto šis atslēgvārds savādāk. Konstruktora iekšpusē, šis attiecas uz jauno objektu, ko konstruktors izveidos.
  3. Atšķirībā no JavaScript funkcijām konstruktori vērtību atgriešanas vietā definē īpašības un darbības.

Konstruktora izmantošana jaunu objektu izveidei

Programmā JavaScript ir vienkāršs uzdevums, izmantojot konstruktoru, lai izveidotu objektu. Šeit ir vienkāršs konstruktors, kam seko izsaukums:

funkcijuStudents() {
šis.nosaukums = "Gloria";
šis.dzimums = "Sieviete";
šis.vecums = 19;
}

ļaut sievieteStudente = jauns Students();

Šajā piemērā sievieteStudente ir objekts, kas izveidots no Students konstruktors. Izmantojiet jauns atslēgvārds, lai izsauktu funkciju kā konstruktoru. Šis atslēgvārds liek JavaScript izveidot jaunu gadījumu Students. Šo funkciju nevajadzētu izsaukt bez jauns atslēgvārds, jo šis konstruktora iekšpusē nenorādīs uz jaunu objektu. Pēc būvniecības, sievieteStudente ir visas īpašības Students. Jūs varat piekļūt šiem rekvizītiem un tos mainīt tāpat kā ar jebkuru citu objektu.

Svarīgas lietas, kas jāzina par JavaScript konstruktoriem

Darbs ar konstruktoriem var būt tik nogurdinošs, un tajā pašā laikā tas var būt viegls uzdevums. Šeit ir dažas svarīgas lietas, kas ikvienam izstrādātājam būtu jāzina par darbu ar konstruktoriem.

Konstruktoru izmantošana ar argumentiem

Varat paplašināt konstruktoru, lai saņemtu argumentus. Tas ir ļoti svarīgi, ja vēlaties rakstīt atsaucīgu, elastīgu kodu.

Ikreiz, kad veidojat objektu no konstruktora, objekts pārmantos visas konstruktorā deklarētās īpašības. Piemēram, sievieteStudente jūs izveidojāt iepriekš, būs rekvizīti nosaukums, dzimums, un vecums ar fiksētām sākotnējām vērtībām. Lai gan jūs varat mainīt katru rekvizītu manuāli, tas būtu daudz darba, ja rakstītu programmu, izmantojot daudzus objektus.

Par laimi, JavaScript konstruktori var pieņemt parametrus, tāpat kā jebkuru citu funkciju. Jūs varat mainīt Students konstruktors, lai pieņemtu divus parametrus:

funkcijuStudents(vārds, dzimums) {
šis.name = vārds;
šis.gender = dzimums;
šis.vecums = 19;
}

Visiem objektiem, kas izveidoti no iepriekš minētā, būs vecums iestatīts uz 19. Jūs varat noformēt savu konstruktoru šādā veidā, ja ir kāds īpašums, kuru vēlaties iegūt visiem objektiem.

Tagad jūs varat definēt unikālus objektus no viena konstruktora, nododot dažādus argumentus.

Argumenti padara konstruktorus elastīgākus. Tie ietaupa laiku un veicina tīru kodu.

Objektu metožu definēšana

Metode ir objekta rekvizīts, kas ir funkcija. Metodes uzlabo jūsu kodu OOP, jo tas jūsu objektiem pievieno dažādas darbības. Šeit ir piemērs:

funkcijuStudents(vārds, dzimums) {
šis.name = vārds;
šis.gender = dzimums;
šis.vecums = 19 ;

šis.sayName = funkciju () {
atgriezties`Mans vārds ir ${name}`;
}
}

Iepriekš minētais pievieno funkciju sakiVārds konstruktoram.

Pieņemsim, ka izmantojat šo konstruktoru, lai izveidotu objektu, ko saglabājat mainīgajā, sievieteStudente. Pēc tam varat izsaukt šo funkciju, izmantojot tālāk norādīto kodu:

sievieteStudente.sayName()

Prototips

Agrāk mēs izveidojām Students tādā veidā, lai visiem tā gadījumiem būtu vecums īpašumu ar vērtību 19. Tā rezultātā katram tiks dublēts mainīgais Students jūsu izveidoto gadījumu.

Lai izvairītos no šīs dublēšanās, JavaScript izmanto prototipu jēdzienu. Visiem objektiem, kas izveidoti no konstruktora, ir līdzīgas tā prototipa īpašības. Jūs varat pievienot vecums īpašumu uz Students prototips, kā parādīts zemāk:

Students.prototips.vecums = 19;

To darot, visi gadījumi Students būs vecums īpašums. Deklarējot prototipa īpašības ir veids, kā samazināt koda dublikātu jūsu lietojumprogrammā. Tas padara jūsu kodu pēc iespējas standarta.

Prototipa īpašums var būt objekts

Prototipa rekvizītus var pievienot atsevišķi, kā paskaidrots iepriekš. Bet, ja jums ir daudz rekvizītu, ko pievienot, tas var būt neērti.

Kā alternatīvu varat ietvert visus nepieciešamos rekvizītus jaunā objektā. To darot, jūs vienlaikus iestatīsit visus rekvizītus. Piemēram:

Student.prototype = {
vecums: 19,
rase: "Balts",
invaliditāte: "Nav"
}

Atcerieties iestatīt konstruktors īpašums, iestatot prototipus jaunam objektam.

Student.prototype = { 
konstruktors: students,
vecums: 19,
rase: "Balts",
invaliditāte: "Nav"
}

Varat izmantot šo rekvizītu, lai pārbaudītu, kura konstruktora funkcija izveidoja instanci.

Supertipi un iedzimtība

Mantojums ir metode, ko programmētāji izmanto, lai samazinātu kļūdas savās lietojumprogrammās. Tas ir veids, kā pieturēties pie Neatkārtojiet sevi (SAUSA) principu.

Pieņemsim, ka jums ir divi konstruktori -Students un Skolotājs— kam ir divas līdzīgas prototipa īpašības.

Student.prototype = { 
konstruktors: students,

sayName: funkciju () {
atgriezties`Mans vārds ir ${name}`;
}
}

Teacher.prototype = {
konstruktors: skolotājs,

sayName: funkciju () {
atgriezties`Mans vārds ir ${name}`;
}
}

Abi šie konstruktori definē sakiVārds metode, identiski. Lai izvairītos no šīs nevajadzīgās dublēšanās, varat izveidot a supertips.

funkcijuIndividualDetaļas(){};

IndividualDetails.prototype = {
konstruktors: IndividualDetails,

sayName: funkciju () {
atgriezties`Mans vārds ir ${name}`;
}
};

Pēc tam varat noņemt sakiVārds no abiem konstruktoriem.

Lai mantotu īpašības no supertipa, izmantojiet Object.create(). Jūs iestatāt abu konstruktoru prototipu uz supertipa gadījumu. Šajā gadījumā mēs iestatām Students un Skolotājs prototipus uz IndividualDetails gadījumu.

Te tas ir:

Students.prototips = Objekts.create (IndividualDetails.prototype);
Skolotājs.prototips = Objekts.create (IndividualDetails.prototype);

To darot, Students un Skolotājs pārmanto visas supertipa īpašības, IndividualDetaļas.

Lūk, kā praktizēt DRY OOP, izmantojot supertipus.

Konstruktori ir spēļu mainītāji

Konstruktori ir galvenā JavaScript sastāvdaļa, un to funkcionalitātes apguve ir ļoti svarīga OOP JavaScript lietojumprogrammu izstrādei. Varat izmantot konstruktoru, lai izveidotu objektus, kuriem ir kopīgas īpašības un metodes. Varat arī izmantot mantojumu, lai definētu objektu hierarhijas.

Programmā ES6 varat izmantot klasē atslēgvārds, lai definētu klasiskās objektorientētās klases. Šī JavaScript versija atbalsta arī a konstruktors atslēgvārds.