"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > Funciones de flecha versus declaraciones de método en ES6: ¿Por qué 'esto' no funciona como se esperaba en las funciones de flecha?

Funciones de flecha versus declaraciones de método en ES6: ¿Por qué 'esto' no funciona como se esperaba en las funciones de flecha?

Publicado el 2025-03-23
Navegar:245

Arrow Functions vs. Method Declarations in ES6: Why Doesn't `this` Work as Expected in Arrow Functions?

Arrow Functions vs. Declaraciones del método en es6

al profundizar en ES6, puede encontrar el siguiente problema:

var person = {
  name: "jason",

  shout: () => console.log("my name is ", this.name)
};

person.shout(); // Prints "my name is "

la intención es que la función acceda a la propiedad de nombre dentro del objeto de persona. Sin embargo, la consola solo imprime "Mi nombre es"

explicación:

este comportamiento surge de la naturaleza distinta de las funciones de flecha en ES6. Las funciones de flecha, a diferencia de las declaraciones de funciones tradicionales, no vinculan esta palabra clave. En cambio, heredan el enlace de su alcance circundante, que, en este caso, es el alcance global.

Solution:

para abordar este problema, puede usar el patrón de Declaración del método ES6, que conserva la unión deseada de esto: [&]

var persona = {{ Nombre: "Jason", gritar() { console.log ("Mi nombre es", this.name); } }; persona.lout (); // Imprime "Mi nombre es Jason"
            
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3