În primul rând, trebuie spus că scopul acestui lucru nu poate fi determinat atunci când funcția este definită, doar când funcția este executată se poate determina la cine face referire, de fapt, punctul final al acesteia este obiectul care o numește (există unele probleme cu această propoziție, și va fi explicată mai târziu de ce există o problemă, deși majoritatea articolelor de pe Internet spun asta, deși în multe cazuri nu va exista nicio problemă cu această înțelegere, ci de fapt acea înțelegere este inexactă, Așadar, când vei înțelege asta, vei avea un sentiment de neînțelegere), așa că voi explora această problemă în profunzime.
Testul este următorul:
Aceasta are valori diferite pentru scopuri diferite ale funcțiilor. În general, acesta este obiectul de mediu în care rulează funcția. Utilizarea acesteia este discutată în detaliu în patru situații.
Cazul 1: Apeluri pure de funcții
Aceasta este cea mai comună utilizare a unei funcții și este un apel global, deci reprezintă un obiect global. Uită-te la codul de mai jos, rulează cu rezultatul 1.
Cazul 2: Metoda de apelare ca obiect
Funcția poate fi numită și metoda unui obiect, caz în care se referă la obiectul părinte.
Cazul 3 Apel ca constructor
Așa-numitul constructor este, prin această funcție, un obiect nou poate fi generat. În acest moment, se referă la acest nou obiect.
Rezultatul run-ului este 1. Pentru a arăta că acesta nu este un obiect global în acest moment, facem câteva modificări codului:
Rezultatul execuției este 2, indicând că valoarea variabilei globale x nu s-a schimbat deloc.
Cazul 4 aplică apelul
apply() este o metodă a unei funcții care schimbă obiectul apelant al funcției. Primul său parametru reprezintă obiectul modificat care apelează funcția. Prin urmare, aceasta se referă la acest prim parametru.
Când parametrul apply() este gol, obiectul global este apelat implicit. Prin urmare, rezultatul execuției este 0, demonstrând că aceasta se referă la obiectul global.
Dacă schimbi ultima linie de cod în
Rezultatul continuu devine 1, demonstrând că acesta reprezintă obiectul obj.
(Sfârșit)
Referință:
Autentificarea cu hyperlink este vizibilă.
Autentificarea cu hyperlink este vizibilă.
|