capital - title case javascript
¿Qué significa "auto" en javascript? (5)
Para todas las ventanas, las propiedades
self
y dewindow
de un objeto dewindow
son sinónimos de la ventana actual y, opcionalmente, puede usarlos para referirse a la ventana actual. Por ejemplo, puede cerrar la ventana actual llamando al métodoclose
dewindow
oself
. Puede usar estas propiedades para hacer que su código sea más legible o para desambiguar la propiedadself.status
referencia de una forma llamadastatus
.
Leí here que " auto se refiere a la ventana o formulario actual ".
El yo no parece referirse al formulario actual en este caso:
<form><input type="text" onkeyup="alert(self.foo.value)" name="foo"></form>
Sin embargo en este caso funciona (refiriéndose a la ventana):
<form><input type="text" onkeyup="alert(self.document.forms[0].foo.value)" name="foo"></form>
Entonces, ¿cuándo usarías la propiedad DOM self
solo en una window
?
Nunca, a menos que quisiera crear una variable self
en el ámbito de una función que se refiera al contexto para una referencia posterior,
function Constructor() {
var self = this;
}
Debe usar this
para referirse al elemento en cuestión, no a self
. En el ámbito global, aunque this
es una referencia a la window
, y self
es también una window
.
Otras respuestas han señalado que el self
no va a referirse al FORM
y que el self
es la window
. Tienen razon self
es la window
Bueno, excepto cuando no lo es. En IE6 o IE7 (olvidado), self.onload
no se self.onload
, aunque window.onload
haría.
Todas las versiones oficiales de IE (e incluso IE9pr3) tienen una implementación intransitiva impar de ==
con estos objetos de host. Usando ==
para comparar una window
o self
con un nodo en el documento, el resultado es true
.
Oddities de IE
alert(self == document.body); // true alert(document.body == self); // false alert(window == self); // true alert(window === self); //false var b = document.createElement("b"); alert(window == b); // false alert(window == document.body.appendChild(b)); // true alert(window == document.body.removeChild(b)); // false
self
no es una palabra clave reservada ni un tipo estándar, pero se ha convertido en un nombre estándar de facto para mantener la referencia a un objeto para cierres.
Aquí creamos un cierre para pasar a setTimeout()
. Cuando se ejecuta ese cierre, se referirá al objeto global. Para mantener una referencia al objeto foo
doLater
originalmente, se usa una var llamada self
. Podría ser cualquier cosa, pero el "yo" tiene una semántica significativa.
Foo.prototype.doLater = function() {
var self = this; // current object
window.setTimeout(function() { self.doSomething(); }, 1000);
}
new Foo().doLater();
self se refiere al ámbito global : si el contexto es una ventana, se referirá a window.self, mientras que en el caso de un contexto sin ventana, se referirá al ámbito global de ese contexto (por ejemplo, en el código de trabajador de servicio, self se refiere a El alcance global del trabajador).
auto se refiere al alcance global de un contexto:
- contexto de ventana
- contexto del trabajador (se está trabajando en el soporte para varios trabajadores para la misma aplicación web).
https://developer.mozilla.org/en-US/docs/Web/API/Window/self