title: Call method stored in variable without specifying this
body: <p>Consider the following code.</p>
  
  <pre><code>class Foo {
    num = 0;
    bar = function(arg) {
      console.log(this.num + arg);
    }
  }
  
  const foo = new Foo();
  const bar = foo.bar;
  
  foo.bar(1);
  
  bar(2);
  
  bar.call(foo, 3);
  </code></pre>
  
  <p><code>foo.bar(1);</code> logs <code>1</code>.</p>
  
  <p><code>bar(2);</code> throws <code>Uncaught TypeError: Cannot read property 'num' of undefined</code>.</p>
  
  <p><code>bar.call(foo, 3);</code> logs <code>3</code>.</p>
  
  <p>Is there a way to store the function <code>foo.bar</code> in a variable in such a way that it can be called without specifying the <code>this</code> object?</p>
  
  <p>I know that the following would work.</p>
  
  <pre><code>const foobar = function(arg) {
    foo.bar(arg);
  }
  </code></pre>
  
  <p>Is there a way to avoid creating the intermediary function? I want to pass methods as arguments to another function, and having to create lots of intermediary functions would really reduce code readability.</p>