Sunteți pe pagina 1din 12

Functions

Ca si in c++ sunt formate dintr-o serie de instructiuni grupate sub un nume ce


poate fi chemat/folosit de mai multe ori intr-un program fara a scrie de fiecare
data instructiunile.
Declaram o functie astfel:

Pentru a chema o functie,scriem numele ei...adica sayHello();


Cateodata,o functie primeste un set de parametrii.In interiorul functiei,acesti
parametri functioneaza ca si variabile. Aceste functii se declara astfel:
Pentru a chema o astfel de functie avem 2 moduri.

return e folosit pentru a returna valoarea unei functi codului care a chemat acea
functie. Se foloseste evident in interiorul functiei.
Pentru o singura valoare se foloseste retrurn varName iar pentru mai multe valori
return arrayName. Putem selecta ce valoare din array sa primim specificand
indexul atunci cand chemam functia.

Anonymous functions
O functie normala,ca cele de mai sus pot fi chemate inainte de a fi declarate
pentru ca atunci cand se incarca pagina,browserul scaneaza intreg scriptul si ia la
cunostiinta existenta lor.
O functie anonima se declara fara nume si e de obicei stocata intr-o variabila.
Aceasta nu poate fi chemata decat dupa punctul in care a fost declatrrata,facand
ca orice cod ce apare inainte de declarare sa poate modifica ce se intampla in
functie.
Declararea si chemarea unei astfel de functii

Immediately invoked function expressions (iife)


Sunt rulate de browser de indata ce acesta ajunge unde au fost declarate,fara a
fi nevoie sa le chemam. Acestea difera in declarare de cele obisnuite,variabila
primind ce returneaza functia nu functia in sine. Functia e pusa in paranteze
rotunde.

Parantezele cu verde ii spun


browserului ca cea functie trebuie rulata imediat iar cele in rosu ii spun sa trateze
functia ca pe o expresie (cele in rosu in acest caz sunt operatori matematici)
Folosim functii anonime si iffe atunci cand vrem ca acestea sa fie rulate o
singura data pentru un task.
-ca un argument pentru o alta functie,pentru a calcula o valoare pentru
acea functie
-pentru a assignui o valoare unei proprietati a unui obiect
-in event listeners pentru a face ceva cand un event ia loc.
-sa previna conflicte intre doua scripturi ce pot folosi aceleasi nume pentru
variabile.
Iffe sunt folosite de cele mai multe ori pentru a impacheta un set de code. Orice
variabila din acel set de cod este protejata de variabilele din alte scripturi ce pot
folosi aceleasi nume.

Variable scope
Locul in care declaram o variabila dicteaza unde si cand putem folosi acea
variabila. De exemplu,daca declaram o variabila intr-o functie,acea variabila poate
fi folosita doar in acea functie. Acest lucru se numeste variable scope.
Avem doua tipuri de variabile:
-variabile locale=cele declarate in functii,si se spune ca au local scope sau
function level scope si nu pot fi accesate in afara functiei. Asta inseamna ca mai
multe functii pot folosi variabile cu acelasi nume din moment ce acestea exista
doar atunci cand o functie ruleaza.
-variabile globale =cele create in afara functiilor ce pot fi folosite oriunde in
script.Se spune ca au global scope. Acestea sunt stocate in memorie for as long as
the web page is loaded,ceea ce inseamna ca folosesc mai multa memorie decat
variabilele locale.

Objects
Obiectele grupeaza un set de variabile si functii pentru a crea un model pentru
un obiect din lumea reala of sorts.
Intr-un obiect,variabilele se numesc proprietati si stocheaza informatii despre
acel obiect (dimensiune,numar de camere,culoare etc).Functiile se numesc
metode si reprezinta taskuri asociate acelui obiect (sa verifice daca mai sunt
camere libere,daca e mai mare de x metrii etc)
Un obiect se gaseste intre acolade si e stocat intr-o variabila.Proprietatile acelui
obiect au un nume si o valoare. Numele poarta denumirea de key si trebuie sa fie
unic in interiorul obiectului.

Mai sus avem un obiect numit hotel. Este doar unul din modurile in care un obiect
poate fi creat. Keywordul this din interiorul functiei de mai sus este folosit pentru
a indica ca se folosesc proprietatile obiectului in care este inclusa.

Moduri de a crea un obiect


Literal notation este cea mai populara metoda de a crea un obiect. Este metoda
din imaginea de sus.
Constructor notation se foloseste de keywordurile new si object pentru a crea
un obiect gol pe care il populam ulterior cu proprietati si metode.Crearea unui
obiect prin aceasta metoda arata astfel:
Accessing an object and dot notation
Se acceseaza o proprietate sau o metoda a unui obiect folosindu-se dot
notation ( objectName.proprietyName , objectName.methodName() ) sau
paranteze patrate (objectName[‘propretyName’] ) **cu paranteza patrata nu
putem accesa metodele unui obiect***
Atunci cand folosim dot notation,daac metoda are nevoie de parametrii,ii putem
scrie intre paranteze ( obj.area(10,5) )

Updating an object
pentru a accesa si updata proprietatile unui obiect folosim dot notation si =
(hotel.name=’Park’) Daca obiectul nu are proprietatea,aceasta va fi adaugata cu
valoare definita de noi.
Pentru a sterge o proprietate se foloseste keywordul delete
(delete hotel.name) (asta sterge proprietatea cu totul.
Daca vrem doar sa stergem valoarea unei proprietati,fara a sterge si
proprietatea,ii putem da valoarea de string gol (hotel.name=’’)

Creating many objects


Cand avem nevoie de un numar mare de obiecte care sa reprezinte lucruri
similare,putem folosi o functie ca sablon care sa creeze fiecare obiect,ca in
exemplul de mai jos.
Se foloseste keywordul this in locul numelui obiectului pentru a indica ca acea
proprietate apartine obiectului pe care aceasta functie il creaza.Fiecare linie care
creaza o proprietate se termina cu punct si virgula
Pentru a crea un obiect,folosim new inainte de a chema functia,iar parametrii
sunt dati in paranteza.

“this” keyword
This e folosit in general in interiorul functiilor si obiectelor iar intelesul lui this
depinde de unde si cum au fost declarate functiile si obiectele.
-o functie in global scope (atunci cand o functie este creata in afara altei
functii sau obiect) afecteaza by default obiectul window (fereastra in sine) .In
acest context,this e folosit pentru a returna proprietati ale obiectului window.
**mai general.putem spune ca this se refera la obiectul sub care a fost creata
functia***
-o variabila globala devine de asemenea proprietate a obiectului
window by default,deci pot fi accesate prin intermediul lui this si obiectului
window.

-o metoda a unui obiect (o functie in interiorul unui obiect) = in acest


caz,this face referire la obiectul in care e declarata functia.
-o variabila declarata global si chemata in interiorul unui obiect cu o
variabila cu acelasi nume= in acest caz this face referire la variabila obiectului in
care a fost chemata functia nu la variabila globala.

Arrays are objects


Arrays sunt de fapt un tip special de obiecte care stocheaza un set de perechi
key/value singura diferenta dintre array si obiecte e ca la arrays,key-ul pentru
fiecare valoare este indexul.
Arrays of objects and objects in arrays
Putem combina arrays in obiecte pentru a crea structuri complexe.Arrays pot
stoca o serie de obiecte unde ordinea e stricta iar obiectele pot la randul lor sa
stocheze arrays ca si vlori ale proprietatilor lor.
-arrays in obiecte:Un obiect poate stoca un array ca si valoare pentru
proprietatile lor. In exemplu de mai jos,un obiect costs foloseste array pentru a
stoca informatii despre camere.

Pentru a accesa informatia folosim sintagma costs.room1.items[0] (aka


obj.proprety.array[index] )
-obiecte in array:valoarea unui element dintr-un array poate fi un obiect.
Acesta se scrie literal pentru fiecare index. (arrayul se numeste costs)

(sau var array=[{accom:420,food:40},{accom:460,food:20}... ] )


Pentru a accesa un obiect folosim sintagma costs[2].phone =pentru obiectul din
index 2 valoarea proprietatii phone
Built in objects
Browserele vin cu un set de obiecte predefinite care reprezinta lucruri legate de
fereastra si pagina.Acestea folosesc in crearea unui site interactiv.
Obiectele pe care le cream sunt adaptate nevoilor noastre prin proprietati si
valori definite de noi. Obiectele built in/predefinite contin funcctionalitate ce
poate fi folosita de toate scripturile noastre.De indata ce pagina se incarca aceste
obiecte sunt disponibile si ofera toate informatiile despre pagina si fereastra de
care avem nevoie.
Accesam aceste obiecte cu dot sintax
Sunt 3 mari categorii de astfel de obiecte:
-browser object model:contin obiecte ce reprezinta fereastra de browser
actuala sau tabul actual si contin obiecte pentru browser history,ecranul
dispozitivului etc.
-document object model:foloseste obiecte pentru a crea o reprezentare a
paginii curente. Creaza obiecte noi pentru fiecare element din pagina/html
-global javascript objects:reprezinta lucruri cu care limbajul JS creaza
modele. Ca de exemplu,un obiect pentru dates and time

What is an object model?


Un obiect este folosit pentru a crea un model al unui obiect din lumea reala. Un
object model este un grup de obiecte cu care formeaza un model a ceva mai
mare/complex.
***Este posibil ca proprietatea unui obiect sa fie un alt obiect..aka child
objects.***
Sunt 3 mari categorii de astfel de obiecte:
-browser object model:creaza un model al ferestrei/tabului
browserului.The top most object reprezinta fereastra browserului si se numeste
window.Copii lui reprezinta alte features ale browserului. (imaginea de mai jos)
-document object model:creaza un model al pagini actuale.The top most
object reprezinta pagina in sine si se numeste document.Copii lui reprezinta alte
elemente din pagina.

-global javascript objects:sunt un grup de obiecte individuale care se refera


la diferite parti din limbajul JS.Numele acestor obiecte incepe de obicei cu litera
mare (String, Date etc).

S-ar putea să vă placă și