title: Javascript function of object as argument
body: <p>Let's say we have an object defined as</p>
  
  <p><code>var object = {counter: 0; increment: function() { this.counter++; } };</code></p>
  
  <p>Now, calling the increment function of the object will increment the counter as expected.</p>
  
  <p><code>object.increment(); //object.counter will now equal to 1</code></p>
  
  <p>What bugs me is that I would have a function that calls an argument function instead, the counter will not be incremented since the <code>this</code> variable is pointing to the closure of the calling function instead.</p>
  
  <p><code>function call(func) { func(); }; call(object.increment); //object.counter still 1</code></p>
  
  <p>So my questions is if there is any way of making the caller function to keep the this variable untouched, so that the desired effect of object.counter to be incremented when called?</p>
  
  <p>EDIT:
  Changed accepted answer because of deeper explanation.</p>