Deo zbornika Učimo Javascript
Interakcija objekata u Javascriptu
Prost primer interakcije objekata u Javascriptu:
const covek = {
energija: 100,
napadni(neprijatelj) {
neprijatelj.energija -= 20
}
}
const ork = {
energija: 100,
napadni(neprijatelj) {
neprijatelj.energija -= 20
}
}
console.log('Pocetna energija coveka: ' + covek.energija)
ork.napadni(covek)
ork.napadni(covek)
console.log('Trenutna energija coveka: ' + covek.energija)
Gornji kod možeš prekopirati u zaseban js fajl, prikačiti ga za HTML stranicu i otvoriti u pregledaču. Sada iz konzole pregledača možeš direktno pozivati objekte i njihove metode, odnosno imati neku vrstu igre u realnom vremenu.
Dobre prakse
U prostom primeru se interakcija vrši tako što jedan objekt direktno menja vrednost atributa drugog objekta, odnosno smanjuje mu energiju. Dobra praksa je, međutim, da objekat ne menja direktno svojstva drugog objekta, već za to koristi predviđene metode.
Na primer, možemo dodati metodu smanjiEnergiju
na oba objekta, nakon čega je pozivamo u napadni
metodi:
const covek = {
energija: 100,
smanjiEnergiju(x) {
this.energija -= x
},
napadni(neprijatelj) {
neprijatelj.smanjiEnergiju(20)
}
}
Menjanje atributa preko metoda nam omogućuje da vršimo različite provere. Sada unutar metode smanjiEnergiju
možemo napraviti proveru da li je objekat mrtav, da ne može smanjivati energiju ispod nule.
Vidimo da kada god nešto promenimo na jednom objektu, moramo to isto menjati i na drugom, što vodi besmislenom dupliranju koda. Srećom, postoje klase koje rešavaju taj problem.