first capital javascript dom keyword self

capital - title case javascript



¿Qué significa "auto" en javascript? (5)

Para todas las ventanas, las propiedades self y de window de un objeto de window 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étodo close de window o self . Puede usar estas propiedades para hacer que su código sea más legible o para desambiguar la propiedad self.status referencia de una forma llamada status .

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