Nel tuo esempio this
è la window
oggetto globale. Provate voi stessi:
<form action="javascript:alert(typeof this.setTimeout);">
risultati in "function"
(vale a dire la funzione globale). Oppure provate:
<form action="javascript:alert(this.nodeType);">
risultati in undefined
(vale a dire che è non indicando l'elemento del modulo) *.
Il valore di "this"
all'interno di un attributo sarà sempre e solo una delle due cose:
- l'
window
oggetto globale
- dell'elemento stesso
L'unica volta this
punta all'elemento Lo stesso è quando viene utilizzato all'interno di un intrinsic event attribute (quelli che sono prefissati con "on"
, ad esempio "onclick"
, "onload"
, ecc.). Questi attributi sono speciali: il browser ri-scopa this
all'elemento su cui si sta attivando l'evento e crea l'oggetto event
(con quel nome) disponibile anche all'interno dell'attributo.
Se l'attributo è non uno degli eventi intrinseci, "this"
sarà l'window
oggetto globale.
Note:
* a meno che naturalmente è capitato di avere una var globale denominato "nodeType"
fonte
2009-09-29 10:13:31
È possibile ottenere ulteriori informazioni con la console.dir() in Firebug (estensione per Firefox) o Web Inspector (strumenti per sviluppatori Safari/Chrome). – eyelidlessness
Prova anche a fare "alert (this.innerHTML)" –