JavaScript are doua metode predefinite, apply() si call(), foarte utile in lucrul cu functii si obiecte.
Ambele permit executarea unei functii ca si cum ar fi o metoda a altui obiect.
Singura diferenta dintre aceste 2 metode, "call()" si "apply()" este forma in care se transmit argumentele la functie.
1. Urmatorul exemplu arata cum se foloseste metoda call() pentru a executa o functie definita in script, ca si cum ar fi o metoda a obiectului "obj1" (ce contine instanta la "document.getElementById('id_tag')")
<div id="id_tag">Exemplu 1 - Metoda call</div>- Primul parametru al metodei "call" este obiectul asupra caruia va fi executata functia. Urmatorii parametri (aici unul, "sir") sunt cei care vor fi transmisi functiei.
<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>
- Avantajul utilizarii acestor metode, "call" si "apply" este faptul ca se poate defini o functie care poate fi folosita cu mai multe obiecte ce contin instante ale elementelor din pagina, sau chiar cu obiecte definite in script (dupa cum e aratat in urmatorul exemplu).Exemplu 1 - Metoda call
<script type="text/javascript"><!--- Ca si la metoda "call", si la "apply" primul parametru este obiectul la care e apelata functia (aici "obj2").
// 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>
<ul> <li>http://coursesweb.net/html/</li> <li>http://www.marplo.net/html/</li> </ul>
.some_class { display: list-item; }
var obj = { "courses": ["php", "javascript", "ajax"] }; var jsonstr = JSON.stringify(obj); alert(jsonstr); // {"courses":["php","javascript","ajax"]}
$strhtml = '<body><div id="dv1">CoursesWeb.net</div></body>'; $dochtml = new DOMDocument(); $dochtml->loadHTML($strhtml); $elm = $dochtml->getElementById("dv1"); echo $elm->nodeValue; // CoursesWeb.net
I`m living here. - Traiesc /Locuiesc aici.
Estoy viviendo aquĆ. - Traiesc /Locuiesc aici.