Professional Documents
Culture Documents
JavaScript Objekti I ES6 9n2
JavaScript Objekti I ES6 9n2
JavaScript Objekti I ES6 9n2
- Literalna notacija
- Pomoću new Object()
- Factory function
- Konstruktorska funkcija
Literalna notacija objekta
Svojstva objekta se definišu između vitičastih zagrada:
Literalna notacija objekta
Kreirati objekat osoba sa svojstvima ime, prezime, godine, telefon.
Literalna notacija objekta
Kreirati objekat Auto sa svojstvima vrsta i brojVrata (primitivna svojstva), motor
(svojstvo tipa objekat, sa svojstvima snaga i zapremina) i potrošnja (funkcijsko
svojstvo, koje za dva prosleđena parametra vraća njihov zbir).
var auto={ vrsta: "limuzina", brojVrata: 5, motor:{ snaga: '185hp', zapremina: 1.5 }, potrosnja: funciton(a,b){ return a+b; } };
Literalna notacija objekta
Kreirati objekat pas, čije je ime Džeki i ima 2 godine. Nakon kreiranja objekta
dodati mu i funkcijsku osobinu "zvuk", koja prilikom poziva vraća vrednost "AV
AV!"
Literalna notacija objekta-primer
Definisati 2 objekta (osoba1 i osoba2) sa proizvoljnim vrednostima svojstava:
ime, prezime, godine i telefon. Proveriti koja osoba je starija i koja ima duže
ime. Rezultate ispisati.
new Object()
Kreiranje praznog objekta pomoću ključne reči new i konstruktorske funkcije
Object(). Svojstva se dodaju nakon toga:
new Object()
Kreirati objekat osoba sa svojstvima ime, prezime, godine, telefon.
new Object()
Kreiranje praznog objekta pomoću ključne reči new i konstruktorske funkcije
Object(). Svojstva se dodaju nakon toga:
Factory funkcija
Factory function je svaka funkcija koja kao rezultat vraća novi objekat. Najčešće
se zasniva na object literalu, ali je pogodniji zbog mogućnosti kreiranja više
objekata.
Konstruktorska funkcija
Do sada smo se susretali sa ugrađenim konstruktorima new Array(), new
Date()...
Konstruktorska funkcija
Pored ugrađenih konstruktora, moguće je deklarisati svoj konstruktor (funkcija,
prvo slovo imena funkcije pisati veliko)
• Objektu se mogu dodeliti nova svojstva i na sledeći način kao u sledećem
primeru pomoću prototypa:
function mojkrug(x, y, r) {
this.xkord = x;
this.ykord = y;
this.radius = r;
}
mojkrug.prototype.povrsina = function () {
return (Math.PI * this.radius * this.radius);
};
mojkrug.prototype.obim = function () {
return (Math.PI * this.radius * 2);
};
mojkrug.prototype.pomeri = function (xPom, yPom) {
this.xkord += xPom;
this.ykord += yPom;
};
automobil.proizvodjac
automobil["proizvodjac"]
• Metoda je funkcija pridružena objektu. Metoda se definiše na isti način kao i
funkcija, a pridružuje se objektu na sledeći način:
imeObjekta.imeMetode = nazivFunkcije;
imeObjekta.imeMetode(parametri);
Može se dodati // Pravi objekat automobil
metoda ofarbaj() var automobil = new Object();
objektu automobil iz // Zadaje vrednost svojstvu u objektu
automobil.proizvodjac = "BMW";
prethodnog primera: // Zadaju se vrednosti jos nekim svojstvima
automobil.motor = new Object();
automobil.motor.zapremina = 3000;
Može se primetiti da automobil.motor.snaga = "170ks";
objekat preko koga automobil.karoserija = new Object();
se poziva metoda automobil.karoserija.vrsta = "limuzina";
automobil.karoserija.boja = "bela";
postaje vrednost // Definise se metoda ofarbaj
rezervisane reči this automobil.karoserija.ofarbaj = ofarbaj;
u telu metode. // Definise se funkcija ofarbaj
function ofarbaj(boja) { this.boja = boja; }
automobil.karoserija.ofarbaj("crvena");
alert("Nova boja automobila je" +automobil.karoserija.boja);
Svojstvo objekta može se obrisati pomoću operatora delete. Brisanje svojstva znači
da se to svojstvo uklanja iz objekta.:
delete automobil.karoserija.vrsta;
Pristup svojstvima pomoću petlje. Kada se radi sa objektima čija svojstva se ne znaju
unapred, petlja for/in omogućava da se iterativno pristupa svojstvima objekta, tj. da se
svojstva nabrajaju:
function PrikazhiSvojstvaObjekta(obj) {
var ime = "";
for(var ime in obj) {
ime += ime + "\n";//ili <br> ako je ispis na stranici
}
}
Da li objekat ima neko svojstvo moguće je ispitati pomoću operatora in, na primer:
• Constructor metoda
Constructor je specijalna metoda koja kreira i inicijalizuje objekat. Ova metoda
je pandan konstruktorskoj funkciji iz ES5, u njoj se definiše sve što je potrebno
da se inicijalizuje novi objekat, uz napomenu da može postojati samo jedna
“constructor” metoda unutar jedne klase.
Kreiranje klase ES6
• Statičke metode
Statičke metode su metode koji ne pripadaju instanciranom objektu, već samoj
klasi, stoga im se ne može pristupiti iz instanciranog objekta. Jedini pristup ovim
metodama je preko same klase. Ovakve metode se definišu korišćenjem
rezervisane reči “static” ispred naziva metode.
Rešiti zadatak:
a) Pomoću factory funkcije
b) Pomoću konstruktorske funkcije
Rešenje (factory funkcija)
Domaći zadatak
Napraviti niz od 5 objekata koji imaju sledeća svojstva:
-Proći kroz svaki element niza (u petlji) i dodati mu property ‘godine’ sa vrednošću jednakoj
broju godina datog objekta (trenutna godina minus godište)
-Izračunati prosečan broj godina(napraviti novu petlju koja to izračunava)
-Nakon svake od prethodnih tačaka ispisati rezultat u konzoli
Pitanja za proveru znanja
• Objasniti sledeće elemente objekta:
• svojstva (properties)
• metodi
• procedure za obradu događaja
• Šta su arrow function i koji oblici postoje?
• Kako se može sve kreirati objekat?
• Navesti primer klase i kreiranja objekta pomocu klase.
Literatura
https://www.valentinog.com/blog/js-execution-context-call-
stack/#JavaScript_What_Is_The_Execution_Context_How_Does_Javascript_Run_Your_Code
http://www.pythontutor.com/visualize.html#mode=edit i
https://tylermcginnis.com/