„JavaScript“ yra nusistovėjusi kalba, tačiau ji tik papildė klasikinio objektinio programavimo (OOP) palaikymą ES6. Kol „JavaScript“ nepridėjo tokių funkcijų kaip klasių deklaracijos, „JavaScript“ tvarkė OOP naudodama mažiau žinomą prototipu pagrįstą paradigmą. Tačiau taikydami bet kurį metodą galite sukurti sudėtingas programas, kuriose naudojamos objektų funkcijos.

Prototipinio JavaScript konstruktorius atrodo panašiai kaip bet kuri kita funkcija. Pagrindinis skirtumas yra tas, kad galite naudoti šią konstruktoriaus funkciją objektams kurti.

Kas yra konstruktorius „JavaScript“?

Konstruktoriai yra vienas iš pagrindinės objektinio programavimo sąvokos. Konstruktorius yra funkcija, kurią galite naudoti norėdami sukurti objekto egzempliorių. Konstruktorius ne tik kurdamas naują objektą, bet ir nurodo jam priklausančias savybes ir elgesį.

Konstruktoriaus sintaksė

funkcijaNameOfConstructor() {
tai.ypatybė1 = "Turtas1";
tai.ypatybė2 = "Turtas2";
tai.ypatybė3 = "Turtas3";
}

Galite sukurti konstruktorių naudodami

instagram viewer
funkcija raktinis žodis, nes tai iš esmės kaip ir bet kuri kita funkcija. Tačiau konstruktoriai laikosi šių taisyklių:

  1. Norėdami atskirti jas nuo kitų funkcijų, naudokite konstruktoriaus pavadinimą, kuris prasideda didžiąja raide.
  2. Konstruktoriai naudojasi tai raktažodis kitaip. Konstruktoriaus viduje, tai nurodo naują objektą, kurį konstruktorius sukurs.
  3. Skirtingai nei JavaScript funkcijos, konstruktoriai apibrėžia ypatybes ir elgseną, o ne grąžina reikšmes.

Konstruktoriaus naudojimas naujų objektų kūrimui

„JavaScript“ naudojant konstruktorių objektui sukurti yra paprasta užduotis. Štai paprastas konstruktorius su iškvietimu po jo:

funkcijaStudentas() {
tai.vardas = "Gloria";
tai.lytis = "Moteris";
tai.amžius = 19;
}

leisti moterisStudentė = naujas Studentas();

Šiame pavyzdyje moteris Studentė yra objektas, sukurtas iš Studentas konstruktorius. Naudoti naujas raktinis žodis, norint iškviesti funkciją kaip konstruktorių. Šis raktinis žodis nurodo „JavaScript“ sukurti naują egzempliorių Studentas. Neturėtumėte iškviesti šios funkcijos be naujas raktinis žodis, nes tai konstruktoriaus viduje nenurodys į naują objektą. Po statybų, moteris Studentė turi visas savybes Studentas. Šias ypatybes galite pasiekti ir keisti taip pat, kaip ir bet kurį kitą objektą.

Svarbūs dalykai, kuriuos reikia žinoti apie „JavaScript“ konstruktorius

Darbas su konstruktoriais gali būti labai varginantis, o kartu ir lengvas darbas. Štai keletas svarbių dalykų, kuriuos kiekvienas kūrėjas turėtų žinoti dirbdamas su konstruktoriais.

Konstruktorių naudojimas su argumentais

Galite išplėsti konstruktorių, kad gautumėte argumentų. Tai labai svarbu, jei norite parašyti reaguojantį, lankstų kodą.

Kai kuriate objektą iš konstruktoriaus, objektas paveldės visas konstruktoriuje deklaruotas savybes. Pavyzdžiui, moteris Studentė kurią sukūrėte aukščiau, turėsite savybių vardas, Lytis, ir amžiaus su fiksuotomis pradinėmis vertėmis. Nors kiekvieną ypatybę galite pakeisti rankiniu būdu, būtų daug darbo, jei rašytumėte programą naudodami daug objektų.

Laimei, „JavaScript“ konstruktoriai gali priimti parametrus, kaip ir bet kurią kitą funkciją. Galite pakeisti Studentas konstruktorius priimti du parametrus:

funkcijaStudentas(vardas, lytis) {
tai.name = vardas;
tai.gender = lytis;
tai.amžius = 19;
}

Visi objektai, sukurti pagal tai, kas išdėstyta pirmiau, turės amžiaus nustatytas į 19. Tokiu būdu galite suprojektuoti savo konstruktorių, jei norite, kad visi objektai turėtų nuosavybę.

Dabar galite apibrėžti unikalius objektus iš to paties konstruktoriaus, pateikdami skirtingus argumentus.

Argumentai daro konstruktorius lankstesnius. Jie taupo laiką ir skatina švarų kodą.

Objektų metodų apibrėžimas

Metodas yra objekto savybė, kuri yra funkcija. Metodai pagerina jūsų kodą OOP, nes jis prideda skirtingą jūsų objektų elgesį. Štai pavyzdys:

funkcijaStudentas(vardas, lytis) {
tai.name = vardas;
tai.gender = lytis;
tai.amžius = 19 ;

tai.sayName = funkcija () {
grąžinti`Mano vardas ${name}`;
}
}

Aukščiau pateikta funkcija prideda funkciją pasakytiVardas konstruktoriui.

Tarkime, kad naudodami šį konstruktorių sukursite objektą, kurį saugote kintamajame, moteris Studentė. Tada galite iškviesti šią funkciją naudodami toliau pateiktą kodą:

moteris Studentė.sayName()

Prototipas

Anksčiau mes kūrėme Studentas tokiu būdu, kad visi jo atvejai turės an amžiaus turtas, kurio vertė 19. Dėl to kiekvieno kintamasis pasikartos Studentas jūsų sukurtas pavyzdys.

Siekiant išvengti šio dubliavimo, JavaScript naudoja prototipų koncepciją. Visi iš konstruktoriaus sukurti objektai turi savo prototipo savybes. Galite pridėti amžiaus nuosavybė į Studentas prototipas, kaip parodyta žemiau:

Studentas.prototipas.amžius = 19;

Tai darydami visi atvejai Studentas turės amžiaus nuosavybė. Deklaruojantis prototipo savybės yra būdas sumažinti pasikartojantį kodą jūsų programoje. Tai daro jūsų kodą kuo standartiškesnį.

Prototipo nuosavybė gali būti objektas

Prototipo ypatybes galite pridėti atskirai, kaip paaiškinta aukščiau. Bet jei turite daug savybių, kurias norite pridėti, tai gali būti nepatogu.

Kaip alternatyva, galite įtraukti visas reikalingas ypatybes naujame objekte. Tai darydami visas savybes nustatysite vienu metu. Pavyzdžiui:

Student.prototype = {
amžius: 19,
lenktynės: "Baltas",
negalia: "Nė vienas"
}

Nepamirškite nustatyti konstruktorius ypatybę nustatant prototipus naujam objektui.

Student.prototype = { 
konstruktorius: Studentas,
amžius: 19,
lenktynės: "Baltas",
negalia: "Nė vienas"
}

Galite naudoti šią ypatybę norėdami patikrinti, kuri konstruktoriaus funkcija sukūrė egzempliorių.

Supertipai ir paveldimumas

Paveldėjimas yra metodas, kurį programuotojai naudoja norėdami sumažinti savo programų klaidas. Tai būdas laikytis Nekartok savęs (DRY) principu.

Tarkime, kad turite du konstruktorius -Studentas ir Mokytojas– turi dvi panašias prototipo savybes.

Student.prototype = { 
konstruktorius: Studentas,

sayName: funkcija () {
grąžinti`Mano vardas ${name}`;
}
}

Teacher.prototype = {
konstruktorius: Mokytoja,

sayName: funkcija () {
grąžinti`Mano vardas ${name}`;
}
}

Abu šie konstruktoriai apibrėžia pasakytiVardas metodas, identiškai. Norėdami išvengti šio nereikalingo dubliavimo, galite sukurti a supertipas.

funkcijaIndividuali informacija(){};

IndividualDetails.prototype = {
konstruktorius: IndividualDetalės,

sayName: funkcija () {
grąžinti`Mano vardas ${name}`;
}
};

Tada galite pašalinti pasakytiVardas iš abiejų konstruktorių.

Norėdami paveldėti savybes iš supertipo, naudokite Object.create(). Abiejų konstruktorių prototipą nustatote į supertipo egzempliorių. Šiuo atveju mes nustatome Studentas ir Mokytojas prototipus į IndividualDetails egzempliorių.

Štai čia:

Studentas.prototipas = Objektas.create (IndividualDetails.prototype);
Mokytojas.prototipas = Objektas.create (IndividualDetails.prototype);

Darant tai, Studentas ir Mokytojas paveldėti visas supertipo savybes, Individuali informacija.

Štai kaip praktikuoti DRY OOP naudojant supertipus.

Konstruktoriai yra žaidimų keitėjai

Konstruktoriai yra pagrindinis „JavaScript“ komponentas, o jų funkcijų įsisavinimas yra labai svarbus kuriant „OOP JavaScript“ programas. Galite naudoti konstruktorių, kad sukurtumėte objektus, kurie dalijasi savybėmis ir metodais. Taip pat galite naudoti paveldėjimą norėdami apibrėžti objektų hierarchijas.

ES6 galite naudoti klasė raktinis žodis, skirtas apibrėžti klasikines į objektą orientuotas klases. Ši JavaScript versija taip pat palaiko a konstruktorius raktažodį.