Cuando se trabaja con objetos de Javascript, hay una gran diferencia entre usar funciones de flecha en comparación con funciones regulares cuando se trata de this . Por ejemplo, usar una función regular aquí vinculará correctamente this :
const person = { name: "Karen", age: 40, hi: function() { console.log("Hi " + this.name); } } person.hi() // "Hi Karen" en comparación con el uso de una función de flecha que vinculará incorrectamente this :
const person = { name: "Karen", age: 40, hi: () => { console.log("Hi " + this.name); } } person.hi() // "Hi " Sin embargo, no estoy seguro de si esta diferencia se aplica al definir métodos class . Por ejemplo, si declaro dos métodos, uno como función de flecha y otro como función normal, ambos parecen enlazar correctamente this .
class Example { constructor() { this.values = [1, 2, 3, 4] } arrowMethod = (num) => { console.log(this.values.map((item) => item * num)); } method(num) { console.log(this.values.map((item) => item * num)); } } const example = new Example(); example.arrowMethod(2); // [2, 4, 6, 8] example.method(2); // [2, 4, 6, 8] Entonces, ¿hay alguna razón para usar uno u otro cuando se trata de métodos de class ?