capital - title case javascript
¿Qué significa "auto" en javascript? (5)
Para todas las ventanas, las propiedades
selfy dewindowde un objeto dewindowson 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étodoclosedewindowoself. Puede usar estas propiedades para hacer que su código sea más legible o para desambiguar la propiedadself.statusreferencia 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