JavaScript je zavedený jazyk, ale pridal iba podporu pre klasické objektovo orientované programovanie (OOP) v ES6. Kým JavaScript nepridal funkcie, ako sú deklarácie tried, spracovával OOP pomocou menej známej paradigmy založenej na prototype. Pomocou oboch prístupov však môžete vytvárať zložité aplikácie, ktoré využívajú objektovo založené funkcie.

Konštruktor v prototypovom JavaScripte vyzerá podobne ako ktorákoľvek iná funkcia. Hlavný rozdiel je v tom, že túto funkciu konštruktora môžete použiť na vytváranie objektov.

Čo je to konštruktor v JavaScripte?

Konštruktéri sú jedným z základné pojmy v objektovo orientovanom programovaní. Konštruktor je funkcia, ktorú môžete použiť na vytvorenie inštancie objektu. Okrem vytvárania nového objektu konštruktor špecifikuje vlastnosti a správanie, ktoré k nemu budú patriť.

Syntax konštruktora

funkciuNameOfConstructor() {
toto.vlastnosť1 = "Nehnuteľnosť1";
toto.vlastnosť2 = "Nehnuteľnosť2";
táto.vlastnosť3 = "Nehnuteľnosť3";
}

Môžete vytvoriť konštruktor pomocou

instagram viewer
funkciu kľúčové slovo, pretože je v podstate ako každá iná funkcia. Konštruktéri však dodržiavajú nasledujúce konvencie:

  1. Ak ich chcete odlíšiť od iných funkcií, použite názov svojho konštruktora, ktorý začína veľkým písmenom.
  2. Konštruktéri používajú toto kľúčové slovo inak. Vo vnútri konštruktéra, toto odkazuje na nový objekt, ktorý konštruktor vytvorí.
  3. Na rozdiel od funkcií JavaScriptu konštruktory definujú vlastnosti a správanie namiesto vracania hodnôt.

Použitie konštruktora na vytváranie nových objektov

V JavaScripte je použitie konštruktora na vytvorenie objektu jednoduchou úlohou. Tu je jednoduchý konštruktor, po ktorom nasleduje vyvolanie:

funkciuŠtudent() {
toto.meno = "Gloria";
toto.pohlavie = "Žena";
toto.vek = 19;
}

nech študentka = Nový Študent();

V tomto príklade študentka je objekt vytvorený z Študent konštruktér. Použi Nový kľúčové slovo na volanie funkcie ako konštruktora. Toto kľúčové slovo hovorí JavaScriptu, aby vytvoril novú inštanciu Študent. Túto funkciu by ste nemali volať bez Nový kľúčové slovo, pretože toto vnútri konštruktora nebude ukazovať na nový objekt. Po výstavbe, študentka má všetky vlastnosti Študent. K týmto vlastnostiam môžete pristupovať a upravovať ich rovnako ako pri akomkoľvek inom objekte.

Dôležité veci, ktoré by ste mali vedieť o konštruktoroch JavaScriptu

Práca s konštruktérmi môže byť taká únavná a zároveň to môže byť ľahká úloha. Tu je niekoľko dôležitých vecí, ktoré by mal každý vývojár vedieť o práci s konštruktérmi.

Používanie konštruktérov s argumentmi

Môžete rozšíriť konštruktor na prijímanie argumentov. Toto je veľmi dôležité, ak chcete napísať citlivý a flexibilný kód.

Kedykoľvek vytvoríte objekt z konštruktora, objekt zdedí všetky vlastnosti deklarované v konštruktore. Napríklad, študentka ktoré ste vytvorili vyššie, budú mať vlastnosti názov, rod, a Vek s pevnými počiatočnými hodnotami. Aj keď môžete každú vlastnosť zmeniť manuálne, dalo by to veľa práce, ak by ste písali program využívajúci veľa objektov.

Našťastie, konštruktéri JavaScriptu môžu akceptovať parametre, ako každá iná funkcia. Môžete zmeniť Študent konštruktor na akceptovanie dvoch parametrov:

funkciuŠtudent(meno, pohlavie) {
toto.meno = meno;
toto.pohlavie = pohlavie;
toto.vek = 19;
}

Všetky objekty vytvorené z vyššie uvedeného budú mať Vek nastavený na 19. Týmto spôsobom môžete navrhnúť konštruktor, ak existuje vlastnosť, ktorú chcete, aby mali všetky objekty.

Teraz môžete definovať jedinečné objekty z rovnakého konštruktora zadaním rôznych argumentov.

Argumenty robia konštruktérov flexibilnejšími. Šetria čas a podporujú čistý kód.

Definovanie objektových metód

Metóda je vlastnosť objektu, ktorá je funkciou. Metódy vylepšujú váš kód v OOP, pretože k vašim objektom pridávajú rôzne správanie. Tu je príklad:

funkciuŠtudent(meno, pohlavie) {
toto.meno = meno;
toto.pohlavie = pohlavie;
toto.vek = 19 ;

toto.sayName = funkciu () {
vrátiť`Moje meno je ${name}`;
}
}

Vyššie uvedené pridáva funkciu povedzme meno konštruktérovi.

Predpokladajme, že použijete tento konštruktor na vytvorenie objektu, ktorý uložíte do premennej, študentka. Túto funkciu potom môžete zavolať pomocou kódu nižšie:

študentka.sayName()

Prototyp

Predtým sme tvorili Študent spôsobom, že všetky jeho inštancie budú mať príponu Vek majetok s hodnotou 19. Výsledkom bude duplicitná premenná pre každú z nich Študent inštanciu, ktorú vytvoríte.

Aby sa predišlo tejto duplicite, JavaScript používa koncept prototypov. Všetky objekty vytvorené z konštruktora zdieľajú vlastnosti jeho prototypu. Môžete pridať Vek majetok do Študent prototyp, ako je znázornené nižšie:

Študent.prototyp.vek = 19;

Týmto spôsobom všetky prípady Študent bude mať Vek nehnuteľnosť. Vyhlasovanie vlastnosti prototypu je spôsob, ako znížiť duplicitný kód vo vašej aplikácii. Vďaka tomu je váš kód čo najštandardnejší.

Vlastnosťou prototypu môže byť objekt

Vlastnosti prototypu môžete pridať jednotlivo, ako je vysvetlené vyššie. Ak však chcete pridať veľa vlastností, môže to byť nepohodlné.

Alternatívne môžete v novom objekte obsahovať všetky požadované vlastnosti. Týmto spôsobom nastavíte všetky vlastnosti naraz. Napríklad:

Student.prototype = {
vek: 19,
rasa: "biely",
postihnutie: "žiadne"
}

Nezabudnite nastaviť konštruktér vlastnosť pri nastavovaní prototypov na nový objekt.

Student.prototype = { 
konštruktér: študent,
vek: 19,
rasa: "biely",
postihnutie: "žiadne"
}

Túto vlastnosť môžete použiť na kontrolu, ktorá funkcia konštruktora vytvorila inštanciu.

Supertypy a dedičnosť

Dedičnosť je metóda, ktorú programátori používajú na zníženie chýb vo svojich aplikáciách. Je to spôsob, ako sa držať Neopakujte sa (SUCHÉ) princíp.

Predpokladajme, že máte dvoch konštruktérov –Študent a učiteľ— ktoré majú dve podobné vlastnosti prototypu.

Student.prototype = { 
konštruktér: študent,

sayName: funkciu () {
vrátiť`Moje meno je ${name}`;
}
}

Teacher.prototype = {
konštruktér: učiteľ,

sayName: funkciu () {
vrátiť`Moje meno je ${name}`;
}
}

Oba tieto konštruktory definujú povedzme meno metóda, rovnako. Aby ste sa vyhli tejto zbytočnej duplicite, môžete vytvoriť a supertyp.

funkciuJednotlivé detaily(){};

IndividualDetails.prototype = {
konštruktér: individuálne podrobnosti,

sayName: funkciu () {
vrátiť`Moje meno je ${name}`;
}
};

Potom môžete odstrániť povedzme meno od oboch konštruktérov.

Ak chcete zdediť vlastnosti z nadtypu, použite Object.create(). Prototyp oboch konštruktorov nastavíte na inštanciu nadtypu. V tomto prípade nastavíme Študent a učiteľ prototypy do inštancie IndividualDetails.

Tu je to:

Študent.prototyp = Objekt.vytvoriť (IndividualDetails.prototype);
Učiteľ.prototyp = Objekt.vytvoriť (IndividualDetails.prototype);

Tým, že robí to, Študent a učiteľ zdediť všetky vlastnosti nadtypu, Jednotlivé detaily.

Takto sa cvičí DRY v OOP pomocou supertypov.

Konštruktéri menia hru

Konštruktory sú kľúčovým komponentom JavaScriptu a zvládnutie ich funkčnosti je kľúčové pre vývoj OOP JavaScript aplikácií. Na vytvorenie objektov, ktoré zdieľajú vlastnosti a metódy, môžete použiť konštruktor. Na definovanie hierarchie objektov môžete použiť aj dedičnosť.

V ES6 môžete použiť trieda kľúčové slovo na definovanie klasických objektovo orientovaných tried. Táto verzia JavaScriptu tiež podporuje a konštruktér kľúčové slovo.