Descriere: Metodele call() si apply()
Download:
Autor: Anonim
Sursa (Link-ul oficial): 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>
- 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>
- 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.