Constellation Knowledge Network - Preguntas y respuestas sobre Bagua - Serie JS Basics: hablemos de esto

Serie JS Basics: hablemos de esto

En la programación orientada a objetos, a menudo tenemos que lidiar con esto. En cuanto a dónde apunta esto en la función, aquellos de nosotros que somos nuevos en JavaScript a menudo no lo sabemos con claridad.

Debemos tener claro que el punto de this en la función no es fijo, y está relacionado con el entorno cuando se ejecuta la función. En pocas palabras, podemos entender que this en la función apunta al objeto. Actualmente llamamos a la función, por lo que también digerimos este tipo de charla para las siguientes situaciones.

1. Cuando se llama como una función

Un ejemplo simple es el siguiente:

Cuando el código se ejecuta en el navegador, se imprimen todos los objetos de la ventana.

Porque cuando se llama como una función, la función se considera llamada en el objeto global de forma predeterminada (objeto global en el entorno nodejs) Nota: no en el objeto de alcance donde se encuentra la función actual

Una cosa a tener en cuenta es la función de flecha (hablaremos de ella en detalle más adelante)

2. Cuando se llama como método de objeto

Un ejemplo simple es como siguiente

Cuando se ejecuta el código, se promete el objeto obj y el valor del nombre es obj. Esto cumple con nuestras expectativas: la función se llama actualmente como un método de obj, por lo que el objeto que llama a la función es. obj.

Esta situación es fácil de digerir para nosotros, pero es diferente en otra situación. Por ejemplo,

El valor del nombre del objeto de ventana impreso en este momento es prueba [. what][ what]

Resulta que fn apunta a una función en este momento (no apunta a obj para ejecutar logThis La llamada de fn es para llamar a una función). cuál es el primer caso, entonces El ejemplo anterior es el siguiente:

3. Ejecutado como constructor

Un ejemplo simple es el siguiente

Lo que se imprime en este momento es nuestro objeto de personas recién generado.

Porque el proceso de ejecución del constructor puede entenderse simplemente como

1. Se genera un nuevo objeto (personas)

2. El objeto prototipo del el objeto apunta al objeto prototipo del constructor (People.prototype)

3. Llame al constructor a través del objeto recién generado (puede entenderse simplemente como People.call (this))

4 Llame como una función de flecha

Un ejemplo simple es el siguiente

En este momento, podemos imprimir porque todos son objetos de ventana, pero el resultado es una bofetada. Lo primero que se imprime es el objeto de ventana y lo segundo es el objeto obj [enojado]

Resulta que la función de flecha no genera un nuevo puntero this. en qué entorno se ejecuta la función de flecha, apunta a este objeto del entorno actual, que es el primero. En los dos casos, esto apunta a obj.logThis() cuando se ejecuta (mencionamos el objeto obj anteriormente)

5. Aplicar, llamar y vincular llamadas

El puntero predeterminado de esto son los cuatro mencionados anteriormente, pero siempre es necesario personalizar el puntero de este. , los tres métodos de aplicar, llamar y vincular son útiles

Estos tres métodos son todos métodos del objeto de función en sí. El primer parámetro admite pasar este conjunto de objetos cuando se llama a la función. como

En este momento, lo primero que se imprime es el objeto ventana (ver descripción 1), el segundo imprime el objeto obj (indicamos claramente que este objeto de la ejecución de la función es obj al pasar parámetros)

Las diferencias entre estos tres métodos son las siguientes

Espero que el resumen anterior sea útil para todos [zuoyi]

上篇: 202010 10¿A qué hora es la lluvia de meteoritos en qué constelación? 下篇: Sueña con funcionarios cuando el duque Zhou se reúne con funcionarios.
Artículos populares