Først og fremst må det sies at poenget med dette ikke kan bestemmes når funksjonen er definert, bare når funksjonen utføres kan det avgjøres hvem dette peker på, faktisk er det siste punktet objektet som kaller den (det er noen problemer med denne setningen, og det vil bli forklart senere hvorfor det er et problem, selv om de fleste artikler på Internett sier dette, selv om det i mange tilfeller ikke vil være noe problem med den forståelsen, men faktisk er denne forståelsen unøyaktig, Så når du forstår dette, vil du få en følelse av uforståelse), så jeg vil utforske dette temaet grundig.
Testen er som følger:
Dette har ulike verdier for ulike formål. Generelt er dette miljøobjektet der funksjonen kjøres. Bruken av dette diskuteres i detalj i fire situasjoner.
Tilfelle 1: Rene funksjonskall
Dette er den vanligste bruken av en funksjon, og det er et globalt kall, så dette representerer et globalt objekt. Se på koden nedenfor, den kjører med resultatet 1.
Tilfelle 2: Kall som en objektmetode
Funksjonen kan også kalles en metode for et objekt, i så fall refererer dette til foreldreobjektet.
Tilfelle 3: Kall som konstruktør
Den såkalte konstruktøren er at gjennom denne funksjonen kan et nytt objekt genereres. På dette tidspunktet refererer dette til dette nye objektet.
Resultatet av løpet er 1. For å vise at dette ikke er et globalt objekt på dette tidspunktet, gjør vi noen endringer i koden:
Resultatet av kjøringen er 2, noe som indikerer at verdien av den globale variabelen x ikke har endret seg i det hele tatt.
Sak 4 søknadskall
apply() er en metode for en funksjon som endrer det kallende objektet til funksjonen. Den første parameteren representerer det endrede objektet som kaller funksjonen. Derfor refererer dette til denne første parameteren.
Når apply()-parameteren er tom, kalles det globale objektet som standard. Derfor er resultatet av kjøringen 0, noe som beviser at dette refererer til det globale objektet.
Hvis du endrer den siste kodelinjen til
Det løpende resultatet blir 1, noe som beviser at dette representerer objektet obj.
(Slutt)
Referanse:
Innloggingen med hyperkoblingen er synlig.
Innloggingen med hyperkoblingen er synlig.
|