var v=[1,2,3];
Array.prototype.f1 = function () {console.log(this)};
Array.prototype.f2 = () => console.log(this);
v.f1();
v.f2();
//OUTPUT
[ 1, 2, 3 ]
{}
chi mi sa spiegare il perchè di questa cosa?
var v=[1,2,3];
Array.prototype.f1 = function () {console.log(this)};
Array.prototype.f2 = () => console.log(this);
v.f1();
v.f2();
//OUTPUT
[ 1, 2, 3 ]
{}
chi mi sa spiegare il perchè di questa cosa?
La questione è semplice, a differenza delle funzioni tradizionali, le funzioni freccia non hanno una propria variabile this, per cui il valore di this fa riferimento allo scope in cui la funzione stessa è eseguita.
Tecnicamente le arrow function non dovrebbero essere usate come metodi di di oggetti.
Vedi Arrow function expressions su MDN
Installa Forum HTML.it Toolset per una fruizione ottimale del Forum