JavaScript objektinis programavimas
Šiame straipsnyje bandysiu pilnai aprašyti JavaScript objektinį programavimą. Kaip sukuriamos JavaScript klasės, kaip jos naudojamos, kaip sukuriami dinaminiai metodai, metodų keitimas bei išvedimas, bei dar kitų susijusių būdų kuriuos galime panaudoti JavaScript objektiniam programavime.
Pirmoji mūsų klasė
Kai daugelyje programavimo kalbų kurios palaiko objektinį programavimą yra naudojamas class žodelis, to neturi JavaScript. JavaScript sudaromos paprasčiausiai pasitelkiant funkcijas, funkcijos tai objekto aprašymai. Kiekviena funkcija tai lyg JavaScript objektas. Žemiau pateiktas pavyzdys sukuria paprastą tuščią klasę:
function Klase() {}
Dabar galime iškviesti savo klasę pasitelkdami žemiau pateiktu pavyzdžiu:
var klasesObjektas = new Klase();
Toliau pateiktame pavyzdyje sukursime neegzistuojančiu parametrus savo nustatytai klasei. Kaip pateikta pirmame pavyzdyje mūsų sukurta klasė yra visiškai tuščia, todėl šiame pavyzdyje pateikti neegzistuojantys parametrai bus automatiškai sukurti su jiems priskirtais duomenimis:
var klasesObjektas = new Klase(); klasesObjektas.num = 5; klasesObjektas.kint = "Labas pasauli"; alert( klasesObjektas.num ); // išveda: 5 alert( klasesObjektas.kint ); // išveda: "Labas pasauli"
Nustačius neegzistuojančiu parametrus jų negalėsime panaudoti pačioje klasėje jei bandytume aprašyti kokį nors veiksmą su pateiktai kintamaisiais, todėl būtina susikurti klasę ar papildyti esamą kuri galėtų atlikti bet kokius veiksmus esančius klasėje. Pateiktame žemiau pavyzdyje parodyta kaip pateikiamas kintamųjų aprašymas klasėje su JavaScript konstruktoriumi this, bei kaip manipuliuoti esamai kintamaisiais:
function Klase() { this.num = 5; this.kint = "Labas pasauli"; } var duom1 = new Klase(); var duom2 = new Klase(); duom1.num = 10; duom1.kint = "Obj1: Labas pasauli"; duom2.num = 20; duom2.kint = "Obj1: Labas pasauli"; alert( duom1.num ); // išveda: 10 alert( duom1.kint ); // išveda: "Obj1: Labas pasauli" alert( duom2.num ); // išveda: 20 alert( duom2.kint ); // išveda: "Obj1: Labas pasauli"
Metodų sukūrimas
Mūsų klasė nėra tobula, jai trūksta ir metodų kurie išvestų duomenis į ekraną, o tai galime atlikti labai paprastai. Metodai sukuriami taip pat kaip ir pati klasė, pasitelkiant function, bet metodai kaip žinia naudojami objektuose kaip papildomas parametras norint gauti informaciją iš pačio objekto, taip ir klasėje. Metodai dažniausiai sukuriami tam kad galėtume gauti ar nustatyti vienus ar kitus parametrus. Pateiktame pavyzdyje parodyta kaip pasitelkiant sukurtais metodais gauti nustatytus duomenis:
function Klase() { this.num = 5; this.kint = "Labas pasauli"; this.numeris = Num; // Num - metodo/funkcijos pavadinimas į kurią kreipiamės this.kintamasis = Kint; // Kint - metodo/funkcijos pavadinimas į kurią kreipiamės } function Num() { alert( this.num ); } function Kint() { alert( this.kint ); } var Objektas1 = new Klase(); var Objektas2 = new Klase(); Objektas1.num = 10; Objektas1.kint = "Obj1: Labas pasauli"; Objektas2.num = 20; Objektas2.kint = "Obj2: Labas pasauli"; Objektas1.numeris(); // išvedama: 10 Objektas1.kintamasis(); // išvedama: "Obj1: Labas pasauli" Objektas2.numeris(); // išvedama: 20 Objektas2.kintamasis(); // išvedama: "Obj2: Labas pasauli"
Discussion