Being a long time C++/C# developer, I find myself moving a lot of of my JS code into “classes” to group functions and data together. As those classes handle event though, I’m finding myself having to write “stub” handlers that serve only to route the calls into a class method to provide the proper this context. So I’m doing things like this:
var Manager = {
foo: 'x',
bar: 1,
onClickStub: function(evt) {
// 'this' refers to HTMLElement event source
Manager.onClick(evt);
},
onClick: function(evt) {
// 'this' now refers to Manager.
// real work goes here.
}
}
Is this the normal way of doing things or is there a better way to structure my event handlers while keeping my class organization?
As Joseph Silber said in the comments above, I think
bindwould be perfect in this case. If you need to support older browsers, you can always add a shim toFunction.prototype.bind(see an example implementation in the MDN docs). Then your code could just be: