Esta es una palabra clave en JavaScript. El valor de esto cambiará dependiendo del uso de la función. Pero siempre hay un principio, es decir, esto se refiere al objeto que llama a la función.
En el lenguaje OO tradicional, este puntero se declara en una clase y representa el objeto en sí. En JavaScript, esto representa el contexto actual, es decir, la referencia de la persona que llama.
******* Esto siempre apunta al propietario de (objeto de función)
Este y objetos globales:
var a = 1; función foo () {var b = 2; console.log (this.a+b); // 3} foo (); // El propietario de la función FOO es la ventana, y esto se refiere al objeto de la ventana en la función global (************* a menos que los métodos nuevos, llamados, aplicar se usen para cambiar la relación de referencia de esto)Esto y objeto:
var persona = {nombre: 'theo wong', género: 'masculino', getName: function () {console.log (this.name); // El propietario de la función getName es un objeto de persona}}; persona.getName ();Esto en funciones anidadas
var myObject = {func1: function () {console.log (this); // myObject var func2 = function () {console.log (this); // Window var Func3 = function () {console.log (this); //ventana }(); } (); }}; myObject.func1 (); // En funciones anidadas, ya que el contexto de ejecución de la función anidada es la ventana, esto se refiere a un objeto de ventana. De hecho, este es un error en ECMA-262-3, que se ha solucionado en el último ECMA-262-5Esto en el procesamiento de eventos:
var showValue = function () {alert (this.Value); };1. <input id = "test" type = "text" />
Evento vinculante a través de dom.onclick, document.getElementById ('test'). OnClick = showValue;
En este momento, el valor de exhibición se llama como el método de domingo de DOM, por lo que esto debería referirse al objeto DOM, ya no al objeto de la ventana
2. Escríbelo en la etiqueta HTML, <input id = "test" type = "text" onClick = "showValue ();" />
Al hacer clic en el DOM, no podemos obtener lo correcto. Esto en este momento se refiere al objeto de la ventana. Debido a que no hay valor definido en el objeto de la ventana, este valor no se puede obtener.
*** En este momento, no está asignando la función del valor de exhibición a la entrada del objeto DOM, sino una referencia. En este momento, el propietario de la función function () es la ventana
document.getElementById ('test'). onClick = function () {showValue ();}Evento vinculante Escuchar a través de AddEventListener/AttachEvent
<input type = "text" id = "test" /> <script type = "text /javaScript"> var dom = document.getElementById ('test'); id = 'ventana'; función test () {alert (this.id); } dom.addeventListener? dom.addeventListener ('hacer clic', prueba, falso): dom.attachevent ('onClick', test); // Test ADDEVENTLISTENER // Window de adjunte </script> // Esta forma de monitoreo de eventos de unión, adjunte, este es un objeto de ventana, y AddEventListener es un objeto DOMEsto y construir:
función obj (nombre, edad) {this.name = name; this.age = edad; this.fun = function () {alert (this.name); }; } var obj = new obj ('xht', 18); // Esto se refiere a este nuevo objeto, nuevos cambios en la relación de referencia de este obj.fun (); // xhtEsto y llamar
// Defina a una persona con el nombre Jack Var Jack = {nombre: "Jack", Age: 26} // Defina a otra persona con el nombre Abruzzi var Abruzzi = {nombre: "Abruzzi", edad: 26} // Defina una función de objeto de función global alerta () {return this.name; } // Establezca el contexto de alerta a Jack, y esto en este momento es Jack Alert (AlertName.call (Jack)); // Establezca el contexto de alerta a Abruzzi, y esto en este momento es ABRUZZI ALERT (alertName.call (Abruzzi));Las citas son un tema relativamente interesante. A diferencia de otros idiomas, las referencias en JavaScript siempre apuntan al objeto final, no a la referencia en sí.
var obj = {}; // objeto vacío var ref = obj; // referencia obj.name = "Objeto"; alerta (nombre de ref.); // refon luego agregue el atributo de nombre obj = ["one", "dos", "tres"]; // Obj señala a otro objeto (objeto de matriz) alerta (ref.name); // REF también apunta a la alerta de objeto original (obj.length); // 3 alerta (ref.length);OBJ es solo una referencia a un objeto anónimo, por lo que REF no lo señala.
La referencia solo puede apuntar a un objeto específico. Cuando el objeto específico cambia, la referencia o referencia al objeto original, en lugar del objeto cambiado.
Lo anterior es la información sobre este puntero y referencia en JavaScript presentada por el editor. Espero que te sea útil. Si tiene alguna pregunta, déjame un mensaje y el editor le responderá a tiempo. ¡Muchas gracias por su apoyo al sitio web de Wulin.com!