[Tutorial JS] Metodele call() si apply()

#1
Nume Tutorial: Metodele call() si apply()
Descriere: Metodele call() si apply()
Download:
Autor: Anonim
Sursa (Link-ul oficial):
tutorialeonline
Propria parere: Folositor.
Tutorialul:

JavaScript are două metode predefinite, apply() și call(), foarte utile în lucrul cu funcții și obiecte.
Ambele permit executarea unei funcții ca și cum ar fi o metodă a altui obiect.
Singura diferență dintre aceste 2 metode, "call()" și "apply()" este forma în care se transmit argumentele la funcție.

1. Următorul exemplu arată cum se folosește metoda call() pentru a executa o funcție definită în script, ca și cum ar fi o metodă a obiectului "obj1" (ce conține instanța la "document.getElementById('id_tag')")

Exemplu 1 - Metoda call

Cod: Selectaţi tot

 <script type="text/javascript"><!--
 // Se defineste o functie ce va fi folosita ca metoda de obiect (instanta la un element HTML)
 // Functia preia si returneaza un sir cu ID-ul, Lungimea si Inaltimea elementului
 // Modifica continutul tag-ului din acel obiect cu cel primit in parametrul "sir"
 function f_metod(sir) {
    // Preia datele
    var idul = this.id;
    var lungime = this.offsetWidth;
    var inaltime = this.offsetHeight;
    this.innerHTML = sir;         // Modifica continutul
    var f_re = 'ID - '+ idul+ "\nLungime - "+ lungime+ "\nInaltime - "+ inaltime;
    return f_re;
 }
 var sir = '<b>Tutorial - Metodele call() si apply()</b>';         // Variabila care va fi transmisa la parametru
 var obj1 = document.getElementById('id_tag');         // Obiectul la care va fi apelata functia "f_metod()"
 // Se apeleaza functia "f_metod()" cu metoda call la obiectul 'obj1'
 var rezultat = f_metod.call(obj1, sir);
 alert(rezultat);         // Se verifica rezultatul
 //--></script> 
- Primul parametru al metodei "call" este obiectul asupra căruia va fi executată funcția. Următorii parametri (aici unul, "sir") sunt cei care vor fi transmiși funcției.
- Funcția fiind creată pentru a fi utilizată ca metodă de obiect, se folosește sintaxa "this" care va face referire la obiectul asupra căruia este apelată funcția.
- Avantajul utilizării acestor metode, "call" și "apply" este faptul că se poate defini o funcție care poate fi folosită cu mai multe obiecte ce conțin instanțe ale elementelor din pagină, sau chiar cu obiecte definite în script (după cum e arătat în următorul exemplu).

2. Iată și un exemplu cu "apply()", folosit cu un obiect creat în script (explicațiile sunt în cod).

Această metodă este similară cu metoda "call", diferența fiind că la "apply" toți parametri se transferă la funcție într-un singur Array.

Cod: Selectaţi tot

 <script type="text/javascript"><!--
 // Se defineste o functie ce va fi folosita ca metoda de obiect
 // Calculeaza produsul argumentelor "nr1" si "nr2"
 // Returneaza produsul calculat + valoarea proprietatii "numar" (a obiectului ce apeleaza)
 function f2_metod(nr1, nr2) {
    var produs = nr1*nr2;
    var f2_re = produs + this.numar;
    return f2_re;
 }
 // Se defineste obiectul (cu o proprietate, "numar") la care va fi apelata functia
 var obj2 = new Object();
 obj2.numar = 8;
 // Se apeleaza functia "f2_metod()" cu metoda apply la obiectul 'obj2'
 var rezultat2 = f2_metod.apply(obj2, [2, 3]);
 alert(rezultat2);         // Se verifica rezultatul (14)
 //--></script> 
- Ca și la metoda "call", și la "apply" primul parametru este obiectul la care e apelată funcția (aici "obj2").
- Al doilea parametru trebuie să fie un Array (aici "[2, 3]"), unde fiecare element, în ordinea scrisă, este parametru transferat ș recunoscut de funcție. Matricea poate fi stocată și într-o variabilă și să se facă apelul cu acea variabilă la al doilea parametru.

Înapoi la “Tutoriale JS”

Cine este conectat

Utilizatori răsfoind acest forum: Niciun utilizator înregistrat și 2 vizitatori