How is `this` determined in JavaScript, and why does a method lose it when you pass it as a callback?
`this` is decided by how a function is called, not where it is written: a method call binds the receiver, `new` binds the fresh object, `call`/`apply`/`bind` bind explicitly, and a plain call gives `undefined` in strict mode or the global object in sloppy mode. Extracting a method into a callback drops the receiver.