Preguntas frecuentes / Registro de conocimientos (1)

一 llamar aplicar enlace

El mismo punto:
puede cambiar esto dentro de la función para señalar la
diferencia:

  1. llamar y aplicar llamará a la función y cambiará esto en la función
  2. Los parámetros pasados ​​por llamada y aplicar son diferentes, los parámetros pasados ​​por llamada son arg1, arg2 ... La forma aplicar es en forma de matriz
  3. bind no llama a funciones, puede cambiar esto para pasar por valor como call

Principales escenarios de aplicación:

  1. llamar a menudo hacer herencia
  2. Aplicar a menudo se relaciona con matrices, como los valores máximos y mínimos de matrices con la ayuda de objetos matemáticos
  3. bind no llama a la función pero cambiará este punto, como cambiar el punto este del temporizador

¿Qué rendimiento es mejor, llame o solicite?
Dos parámetros pasados <=3una actuación similar cuando >3el rendimiento de llamada cuando relativamente mejor que el rendimiento de algunos aplican
generalmente desarrolló mediante una llamada a un poco tarde

valores de los parámetros Alcance detrás del objeto delante del parámetro puede ser una pluralidad llamada-
apply- primer parámetro el segundo parámetro está en el ámbito objeto debe ser una matriz
bind- un alcance pero no hacer bind inmediatamente

var b = a.fn
var c = b.bind(a,1,2)
c() // c的作用域是a

2. ¿Qué es una función de orden superior?

1. Función como parámetro
2. Función como valor de retorno

¿Cuál es la diferencia entre la función de tres flechas y la función ordinaria (función)?

  1. La sintaxis de la función de flecha es más concisa que las funciones ordinarias
  2. La función de flecha no tiene su propio esto. Cualquier método como esta llamada y aplicar en el contexto al que pertenece esta función heredada no puede cambiar esto.
  3. No hay argumentos (en forma de matriz) en la función de flecha, solo ... arg obtiene el conjunto de parámetros pasado
  4. La función de flecha no se puede ejecutar por nuevo porque la función de flecha no tiene su propio prototipo

Cuatro puntos de diferentes métodos de llamada de esta función apuntan a

  1. Llamada a la función ordinaria
fn();// this指向window
  1. Llamada al método
obj.fn(); // this指向obj
  1. Llame a esto dentro del constructor como un constructor para apuntar al objeto creado por el constructor
  2. Como manejador en el evento
btn.onClick=function(){}; // 触发该事件的对象
  1. Como un parámetro del temporizador
setInterval(function(){},1000) // this指向window

Resumen: esto dentro de la función no se determina al escribir, se determina por la función cuando se llama

Cambie esto a
este puntero, el objeto actual (objeto de alcance) es la ventana sin la persona que llama

  1. Función de flecha
  2. Declare una variable para guardar el puntero var que = esto
  3. la llamada ejecuta un nombre de función de función. call (xx) coloca la función en un objeto de alcance específico para su ejecución
  4. aplique el nombre de la función. aplique (objeto del alcance)

Cinco modos estrictos

  1. Elimine la sintaxis JS irracional e irracional y el comportamiento menos extraño
  2. Elimine algunos aspectos inseguros del funcionamiento del código y garantice la seguridad del funcionamiento del código.
  3. Mejore la eficiencia del compilador y aumente la velocidad de funcionamiento
  4. Deshabilitó algunas gramáticas que pueden definirse en futuras versiones de ECMAScript para allanar el camino para futuras nuevas versiones de Javascript. Por ejemplo, palabras reservadas como la exportación de clase extiende la importación súper. No se pueden hacer nombres de variables.
    Modo estricto abierto
'use strict' // 下面就会安装严格模式执行代码

Variables en modo estricto

  1. Debe declararse antes de usar
  2. No se pueden eliminar las variables declaradas a voluntad

Modo estricto esto apunta al problema

  1. Esto en el ámbito global no está definido
  2. Si el constructor no agrega nuevo, llamar a este punto a indefinido
  3. El temporizador todavía apunta a la ventana

Cambios de funciones.

  1. No se permiten nombres de parámetros de función duplicados
  2. No se permite declarar funciones en bloques de código que no son de función
41 artículos originales publicados · Me gusta2 · Visitas 1836

Supongo que te gusta

Origin blog.csdn.net/weixin_43883485/article/details/104703751
Recomendado
Clasificación