En las funciones de flecha (arrow functions
), this
se refiere al ámbito léxico que rodea a la función de flecha, no necesariamente al objeto global. El ámbito léxico se refiere al ámbito en el que se definió la función de flecha.
En una función regular, this
se refiere al objeto que invoca la función. Sin embargo, si una función regular no es invocada por un objeto, this
por defecto se referirá al objeto global. Por ejemplo, en un entorno de navegador, el objeto global sería window
.
Aquí tienes un ejemplo de cómo funcionan las funciones de flecha:
En este caso, innerFunc
es una función de flecha y this
se refiere al ámbito que rodea a innerFunc
, que en este caso es el método sayName
. Como sayName
es un método del objeto obj
, this
se refiere a obj
, incluso dentro de la función de flecha.
const obj = {
name: 'John',
sayName: function() {
console.log(this.name); // 'John'
const innerFunc = () => {
console.log(this.name); // 'John'
}
innerFunc();
}
};
obj.sayName();
Sin embargo, si innerFunc
fuera una función regular, this
se referiría al objeto global, ya que la función regular no está siendo invocada por un objeto. A continuación se muestra un ejemplo de esto:
const obj = {
name: 'John',
sayName: function() {
console.log(this.name); // 'John'
const innerFunc = function() {
console.log(this.name); // undefined
}
innerFunc();
}
};
obj.sayName();
En este caso, innerFunc
es una función regular y this
se refiere al objeto que invoca innerFunc
. Como innerFunc
no es invocado por un objeto, this
se refiere al objeto global, que no tiene una propiedad name
, por lo que se imprime undefined.
I am particularly drawn to developing applications that are not only functional but also visually appealing and easy to use. I accomplish this by implementing SOLID principles and clean architecture, and applying testing to ensure quality.