Įvadas į klases ir objektus JavaScript
Dabar mes imsimės studijuoti OOP JavaScript. Pažvelkime į pavyzdį iš realaus gyvenimo, o vėliau perkelsime jį į JavaScript.
Kaip pavyzdį paimkime automobilį. Jis turi ratus, spalvą, kėbulo tipą, variklio darbinį tūrį ir taip toliau. Be to, vairuotojas gali duoti jam komandas: važiuoti, sustoti, pasukti į dešinę, į kairę ir pan.
Galima sakyti, kad egzistuoja tam tikras klasis automobilių, turintis bendrų savybių (visi turi ratus ir visiems jiems galima duoti komandas).
Konkretus automobilis, stovintis gatvėje - yra šio klasio atstovas, arba, kitais žodžiais tariant, objektas šio klasio. Visi šio klasio objektai turi savybes: ratų skaičių, spalvą, kėbulo tipą ir metodus: važiuoti, sustoti, pasukti į dešinę, į kairę.
Kitaip tariant, pats klasis - tai brėžinys, pagal kurį gamykloje gaminami automobiliai. Objektas gi - tai pati mašina, pagaminta pagal šiuos brėžinius.
JavaScript klasis sukuriamas naudojant raktinį
žodį class, po kurio seka šio klasio pavadinimas.
Sukurkime klasį Car:
class Car {
// čia kodas, tai yra JavaScript brėžinys automobilio
}
Nurodykime dabar mūsų brėžinyje, kad bet kuris automobilis, sukurtas pagal šį brėžinį, turės savybę spalvai ir savybę kuro kiekiui.
Norėdami tai padaryti, klasio viduje parašykime savybę
color ir savybę fuel:
class Car {
color; // automobilio spalva
fuel; // kuro kiekis
}
Dabar sukurkime mūsų klasio metodus.
JavaScript metodai yra panašūs į įprastas funkcijas,
tik deklaruojami be raktinio žodžio function.
Kaip jau minėta anksčiau, mūsų automobilis gali važiuoti, gali pasisukti, gali sustoti. Sukurkime atitinkamus metodus mūsų klasyje:
class Car {
color; // automobilio spalva
fuel; // kuro kiekis
// Komanda važiuoti:
go() {
// kažkoks JavaScript kodas
}
// Komanda pasisukti:
turn() {
// kažkoks JavaScript kodas
}
// Komanda sustoti:
stop() {
// kažkoks JavaScript kodas
}
}
Mes sukūrėme savo automobilio brėžinį. Dabar reikia nuvykti į gamyklą ir pagaminti šio klasio objektą (tai yra konkretų automobilį).
JavaScript tai daroma naudojant raktinį žodį
new, po kurio rašomas klasio pavadinimas:
new Car; // įsakome gamyklai pagaminti automobilį
Tačiau, jei tiesiog sukursite klasio objektą - tai nieko nebus (tai tas pats, kaip, pavyzdžiui, deklaruoti masyvą ir niekur jį neįrašyti). Mums reikia kintamojo, skirtame šiam objektui saugoti.
Tegul šis kintamasis vadinasi myCar
- į jį įrašykime mūsų sukurtą objektą:
let myCar = new Car;
Sukūrus automobilį, galima kreiptis į jo savybes. Kreipimasis į jas atliekamas per tašką. Nustatykime mūsų objekto savybes:
let myCar = new Car; // įsakome gamyklai pagaminti automobilį
myCar.color = 'red'; // dažome raudonai
myCar.fuel = 50; // pilame kurą
Viskas, mūsų automobilis sukurtas, nudažytas ir pripiltas kuro. Dabar mes galime duoti jam komandas per šio automobilio metodus.
Kreipimasis į metodus taip pat atliekamas per tašką, tačiau, skirtingai nei su savybe, po metodo pavadinimo reikia rašyti skliaustelius. Duokime komandas mūsų objektui:
myCar.go();
myCar.turn();
myCar.stop();