En su ejemplo this
es el window
objeto global. Inténtelo usted mismo:
<form action="javascript:alert(typeof this.setTimeout);">
resultados en "function"
(es decir, la función global). O probar:
<form action="javascript:alert(this.nodeType);">
resultados en undefined
(es decir, no es señalando el elemento de formulario) *.
El valor de "this"
dentro de un atributo siempre será solamente una de dos cosas:
- la
window
objeto global
- el propio elemento
La única vez this
puntos al elemento en sí es cuando se usa dentro de un intrinsic event attribute (los que tienen el prefijo "on"
, por ej. "onclick"
, "onload"
, etc.). Estos atributos son especiales: el buscador vuelve a ver el this
en el elemento en el que se activa el evento y crea el objeto event
(con ese nombre) también disponible dentro del atributo.
Si el atributo es no uno de los eventos intrínsecos, "this"
será el window
objeto global.
Notas al pie:
* a menos que, por supuesto, que pasó a tener una var global llamada "nodeType"
Puede obtener más información con la consola.dir() en Firebug (extensión de Firefox) o Web Inspector (herramientas de desarrollador de Safari/Chrome). – eyelidlessness
Además, intente hacer "alert (this.innerHTML)" –