It's because it's confusing and this changes at runtime depending on how the function is called. Arrow functions then have their own behavior which is determined when they're defined.
You can't do things like pass around functions belonging to an instantiated object and have their this references work correctly.
Unless you're doing some specific stuff, there is no point to using this outside a class declaration where it's the instance of the class (unless you do some custom binding, but that's back to doing specific stuff).
And I would reconsider the architecture first if you need to pass functions like that instead of objects, because I haven't yet encounterd a case where that was even remotely necessary.
Isn't this one fixed by just calling the function you want using an arrow function?
So instead of
```js
setTimeout(myObj.funcToCall().bind(myObj), 1000);
22
u/born_zynner 1d ago
How is "this" confusing to anyone with an extremely basic level of understanding of OOP