Este
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.
1. Definición
1. Este es un objeto especial (o esta referencia) dentro de la función: se refiere al objeto de entorno en el que se ejecuta la función.
2. Esta referencia es una variable de solo lectura que se puede usar en cualquier momento en el código JavaScript. Esta referencia de referencia (señala) es un objeto que tiene la característica que cambia automáticamente su objeto de referencia de acuerdo con el contexto del código. Sus reglas de cita son las siguientes:
• En el código más externo, esta referencia se refiere a un objeto global.
• Dentro de una función, esta referencia varía según la forma en que se llama a la función. como sigue
1) La llamada del constructor: esta referencia se refiere al objeto generado
2) Llamada de método: esta referencia se refiere al objeto receptor
3) Aplicar o llamar: esta referencia se refiere a un objeto especificado con los parámetros de aplicar o llamar
4) Otras formas de llamar: esta referencia se refiere al objeto global
2. Basado en la información en línea anterior y relevante, el estado de uso de este objeto (citado) se resume de la siguiente manera:
JavaScript es un lenguaje dinámico, y solo cuando se ejecuta esta palabra clave se puede determinar. Por lo tanto, esto siempre apunta a la persona que llama, es decir, una referencia al "objeto de llamada". En pocas palabras, a qué objeto se le llama el método, esto apunta a ese objeto. Dependiendo del método de llamada de función, esto puede apuntar a un objeto global, el objeto actual o cualquier otro objeto.
1. Llamadas de función global, esto en la función global apuntará a la ventana de objeto global. (Modo de llamada de función)
// Lista de códigos 1 <script type = "text/javaScript"> var Message = "This In Window"; // Esta oración se escribe fuera de la función y dentro de la función function func () {if (this == Window) {alert ("this == Window"); alerta (mensaje); this.methoda = function () {alert ("Soy una función");}}}} func (); // Si no se llama al método FUNC, los atributos o métodos definidos en él no se recuperarán mediante métoda (); </script>El resultado de la llamada de func () es esta ventana ==, esto en la ventana
El resultado de la llamada a métoda () es que soy una función
2. Llamada del constructor, es decir, instanciando un objeto que usa nuevo, esto apuntará al objeto generado a través del constructor. (Modo de llamada de constructor)
Listado de código 2
<script type = "text/javaScript"> function func () {if (this == window) {alert ("this == Window");} else {alert ("this! = Window");} this.fielda = "Soy un campo"; alerta (this);} var obj = new Func (); alert (obj.fielda); // Esto apunta al objeto obj </script>3. Llamando al método del objeto, esto apunta al objeto actual. Cualquier función, siempre que la función se use o asigne como método de objeto, esta función dentro de la función es una referencia al propio objeto. También se puede entender que esto está escrito en un objeto normal, y esto apunta al objeto en sí. (Modo de llamada de método)
(Definición de método: una función como propiedad de objeto se llama método)
// Code List 3 <script type = "text/javascript"> var obj = {x: 3, doit: function () {if (this == Window) {alert ("this == Window");} else {alert ("El método se llama:" + this.x);}}; obj.doit (); // Esto apunta al objeto obj </script>4. Llame a esto a través del método de aplicar o llamar, esto apunta al objeto aprobado.
El método de aplicar o llamar se puede usar para llamar a un método en lugar de otro objeto. El método de llamada cambia el contexto del objeto de una función desde el contexto inicial a un nuevo objeto especificado por ThisObj. Si no se proporciona el parámetro de este OBJ, el objeto global se usa como ThisObj. (Aplicar el modo de llamada)
// Lista de código 4 <script type = "text/javaScript"> var obj = {x: 3, doit: function () {alert ("El método se llama:" + this.x);}}; var obj2 = {x: 4}; obj.doit (); // 3, esto apunta a objobj.doit.apply (obj2); // 4, esto apunta a obj2obj.doit.call (obj2); // 4, esto apunta a obj2 </script>5. Esto en la cadena prototipo: el objeto prototipo y esto en el constructor apuntan al objeto de instancia recién creado. Use el método de extensión prototipo para obtener una instancia del objeto fuente utilizando esto, y los campos privados no se pueden obtener a través de la cadena prototipo.
// Code List 5 <script type = "text/javaScript"> function func () {this.fielda = "soy un campo"; var privateFieldA = "I'm a var";} func.prototype = {extendMethod: function (str) {alert (str + ":" + this.fielda); alerta (privatefielda); // Se produjo un error, el campo privado no se pudo obtener a través de la cadena prototipo. }}; var obj = new Func (); obj.extendMethod ("de prototipo"); // En este objeto de puntos de puntos obj en la cadena de constructor y prototipo en este momento, obj </script>6. Esto en el cierre - cierre: la función escrita en la función, esto apunta a la ventana del objeto global.
6.1 Cierres en un objeto
// Code List 6 <script type = "text/javaScript"> var name = "The Window"; var obj = {name: "mi objeto", getNameFunc: function () {return function () {return this.name;}}}; alert (obj.getNameFunc () ()); // la ventana </script>En este momento, esto en el cierre apunta a la ventana del objeto global, y solo puede obtener las propiedades del objeto global. Entonces, ¿qué debo hacer si las propiedades dentro del objeto (variables de funciones externas) quieren acceder? Simplemente guarde este objeto de la función externa en una variable a la que se puede acceder mediante un cierre. Mira el siguiente código:
// Code List 7 <script type = "text/javaScript"> var name = "The Window"; var obj = {name: "mi objeto", getNameFunc: function () {var que = this; return function () {return that.name;}}}; alerta (obj.getNameFunc () () ()); // mi objeto </script>Asigne esto a la función externa a esa variable, puede leer la variable de la función externa.
6.2 Si se refiere directamente a la función o instancia una función, esto en la función de cierre, devuelve apunta a la ventana.
// Code List 8 <script type = "text/javaScript"> function a () {alert (this == Window); var that = this; var func = function () {alert (this == Window); alert (que);}; return Func;} var b = a (); b (); // true, true, [ventana de objeto] var c = new a (); c (); // falso, true, [objeto objeto] </script>7. La función usa el método bind () para unir un objeto, y esto apuntará al valor pasado a la función bind ().
// Lista de códigos 9 <script type = "text/javascript"> window.color = "rojo"; var obj = {color: "azul"}; función sayscolor () {alert (this.color);} var objsayColor = saycolor.bind (obj); objsaycolor (); // azul </script>8. El segmento de script incrustado en el elemento HTML, esto apunta al elemento en sí mismo
// Lista de códigos 10 <div onClick = "test (this)" id = "div"> haga clic en mí </div> <script type = "text/javascript> test (obj) {alert (obj); // [Object htmlDivelement]} </script>9. Escriba en la etiqueta de script: esto se refiere a la ventana de objeto global. Esto es lo mismo que la variable global llamada por la función global en el primer punto.
Lo anterior es una cita de esto 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!