When passing object methods as callbacks, for instance to setTimeout, there’s a known problem: "losing this".
this.firstName it tries to get window.firstName, which does not exist.
The result of func.bind(context) is a special function-like “exotic object”, that is callable as function and transparently passes the call to func setting this=context.
In other words, calling boundFunc is like func with fixed this.
All arguments are passed to the original func “as is”, for instance:
Glasp is a social web highlighter that people can highlight and organize quotes and thoughts from the web, and access other like-minded people’s learning.