JavaScript – Optimizacija koda keÅ¡iranjem objekata
JavaScript aplikacije vremenom postaju sve veÄe i komplikovanije, tako da raste potreba za efikasnijim skriptovima. Ako se vratimo na poÄetke JavaScript-a, kada smo uz pomoÄ skriptova samo menjali boju pozadine, ili vrÅ¡ili neke jednostavnije validacije formulara, tada zbog malog koda efikasnost skriptova nije bila u pitanju. Sada kada imamo gotovo cele aplikacije na jednoj .html stranici, efikasnost programskog koda nije viÅ¡e neÅ¡to Å¡to moÅŸemo preskoÄiti. Zato Äemo vam u ovom prilogu pokazati jedan od momenata za poveÄanje efikasnosti vaÅ¡ih skriptova.
Radi se zapravo o tzv. „keÅ¡iranju objekata“, kojim dramatiÄno moÅŸemo poveÄati brzinu izvrÅ¡avanja programa. Äesto vaÅ¡i skriptovi viÅ¡estruko pristupaju odreÄenim objektima, kao u sledeÄem primeru:
<script language="JavaScript">
for (i=0; i<document.images.length; i++)
document.images[i].src = "blank.gif"
</script>
U gornjem kodu, objektu „document.images“ se viÅ¡estruko pristupa. Ovaj kod je totalno neefikasan, poÅ¡to browser mora dinamiÄki da dva puta pristupi objektu tokom jednog ponavljanja petlje (prvi put pri proveri „if i<document.images", i drugi put, kada menja osobinu slike "src"). Ako, na primer, na stranici imamo 10 ovakvih slika, onda imamo 20 puta pozivanje objekta "document.images". Veliki broj poziva moÅŸe ponekad i da obori browser.
KeÅ¡iranje objekata znaÄi da objekte kojima Äesto pristupamo, smestimo unutar korisniÄki definisane varijable, i da onda tu varijablu koristimo umesto viÅ¡estrukog pozivanja objekta. PoboljÅ¡anje performansi moÅŸe biti znaÄajno. U sledeÄim redovima Äemo navesti modifikovanu verziju prethodnog koda, koristeÄi keÅ¡iranje objekta:
<script language="JavaScript">
var slike = document.imagesfor (i=0; i<slike.length; i++)
slike[i].src="blank.gif"
</script>
Ovim kodom, ne samo da je smanjen broj referenciranja objekata za pola, nego i svaki put kada pozivamo objekat, browser viÅ¡e ne mora ide na document.images, veÄ samo treba da pristupi formiranom nizu.
Pratite Krstaricu i preko mobilne aplikacije za Android i iPhone.