Prima di tutto, va detto che il senso di questo non può essere determinato quando la funzione è definita, solo quando la funzione viene eseguita si può determinare a chi si riferisce, infatti, il punto finale di questo è l'oggetto che la chiama (ci sono alcuni problemi con questa frase, e sarà spiegato più avanti perché c'è un problema, anche se la maggior parte degli articoli su Internet lo afferma, anche se in molti casi non ci sarà alcun problema con questa comprensione, ma in realtà tale comprensione è inaccurata, Quindi, quando capirai questo, avrai una sensazione di incomprensione), quindi esplorerò questa questione a fondo.
Il test è il seguente:
Questo ha valori diversi per scopi di funzioni differenti. In generale, questo è l'oggetto ambiente in cui la funzione è eseguita. L'uso di questo viene discusso in dettaglio in quattro situazioni.
Caso 1: Chiamate di funzione pura
Questo è l'uso più comune di una funzione, ed è una chiamata globale, quindi rappresenta un oggetto globale. Guarda il codice qui sotto, funziona con un risultato di 1.
Caso 2: Chiamata come metodo oggetto
La funzione può anche essere chiamata come metodo di un oggetto, nel qual caso si riferisce all'oggetto genitore.
Caso 3 Chiamata come costruttore
Il cosiddetto costruttore è che, attraverso questa funzione, può essere generato un nuovo oggetto. A questo punto, questo si riferisce a questo nuovo oggetto.
Il risultato della run è 1. Per dimostrare che al momento non si tratta di un oggetto globale, apportiamo alcune modifiche al codice:
Il risultato della run è 2, indicando che il valore della variabile globale x non è cambiato affatto.
Caso 4 applica la chiamata
apply() è un metodo di una funzione che modifica l'oggetto chiamante della funzione. Il suo primo parametro rappresenta l'oggetto modificato che chiama la funzione. Pertanto, questo si riferisce a questo primo parametro.
Quando il parametro apply() è vuoto, l'oggetto globale viene chiamato di default. Pertanto, il risultato della corsa è 0, dimostrando che si riferisce all'oggetto globale.
Se cambi l'ultima riga di codice in
Il risultato continuo diventa 1, dimostrando che questo rappresenta l'oggetto obj.
(Fine)
Riferimento:
Il login del link ipertestuale è visibile.
Il login del link ipertestuale è visibile.
|