My Name Is Bound, Method Bound ...
it seems to me the most obvious thing ever but I keep finding here and there these common anti pattern: // 1. The timer Case this.timer = setTimeout(   this.doStuff.bind(this), 500 ); // 2. The Listener Case (objOrEl || this).addEventListener(   type, this.method.bind(this), false );  What Is Wrong I have explained a while ago what's wrong  and how to improve these cases but I understand the code was too scary and the post was too long  so here the summary: every setTimeout()  call will create a new bound object and this is both redundant and inefficient  plus it's not GC friendly there is no way to retrieve that listener created inline so it's impossible to remove the listener  any time is necessary ... yes, even after, when you do refactoring 'cause you will need to clean up listeners  What You Need The short version is less than a tweet, 64bytes: function b(o,s,t){return(t=this)[s="@"+o]||(t[s]=t[o].bind(t))} This is the equivalent of: // as generic prototy...