Pirmkārt, jāsaka, ka tā jēgu nevar noteikt, kad funkcija ir definēta, tikai tad, kad funkcija tiek izpildīta, var noteikt, uz ko tas norāda, patiesībā pēdējais punkts ir objekts, kas to sauc (ar šo teikumu ir dažas problēmas, un vēlāk tiks izskaidrots, kāpēc pastāv problēma, lai gan lielākā daļa interneta rakstu to saka, lai gan daudzos gadījumos nebūs problēmu ar šo izpratni, bet patiesībā šī izpratne ir neprecīza, Tātad, kad jūs to sapratīsiet, jums būs neizpratnes sajūta), tāpēc es padziļināti izpētīšu šo jautājumu.
Tests ir šāds:
Tam ir atšķirīgas vērtības dažādiem funkciju mērķiem. Kopumā tas ir vides objekts, kurā darbojas funkcija. Tās izmantošana ir detalizēti aplūkota četrās situācijās.
1. gadījums: tīri funkciju izsaukumi
Tas ir visizplatītākais funkcijas lietojums, un tas ir globāls izsaukums, tāpēc tas ir globāls objekts. Apskatiet zemāk esošo kodu, tas darbojas ar rezultātu 1.
2. gadījums: izsaukšana kā objekta metode
Funkciju var saukt arī par objekta metodi, tādā gadījumā tas attiecas uz vecākobjektu.
3. gadījums: zvaniet kā konstruktoram
Tā sauktais konstruktors ir caur šo funkciju, var ģenerēt jaunu objektu. Šajā brīdī tas attiecas uz šo jauno objektu.
Skrējiena rezultāts ir 1. Lai parādītu, ka tas šobrīd nav globāls objekts, mēs veicam dažas izmaiņas kodā:
Izpildes rezultāts ir 2, kas norāda, ka globālā mainīgā x vērtība vispār nav mainījusies.
4. gadījums pieteikties zvans
apply() ir funkcijas metode, kas maina funkcijas izsaucamo objektu. Tās pirmais parametrs attēlo mainīto objektu, kas izsauc funkciju. Tāpēc tas attiecas uz šo pirmo parametru.
Ja parametrs apply() ir tukšs, globālais objekts tiek izsaukts pēc noklusējuma. Tāpēc izpildes rezultāts ir 0, pierādot, ka tas attiecas uz globālo objektu.
Ja maināt koda pēdējo rindiņu uz
Izpildes rezultāts kļūst par 1, pierādot, ka tas attēlo objektu.
(Beigas)
Atsauce:
Hipersaites pieteikšanās ir redzama.
Hipersaites pieteikšanās ir redzama.
|