Consider the following 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);
foo.bar(1);
logs 1
.
bar(2);
throws Uncaught TypeError: Cannot read property 'num' of undefined
.
bar.call(foo, 3);
logs 3
.
Is there a way to store the function foo.bar
in a variable in such a way that it can be called without specifying the this
object?
I know that the following would work.
const foobar = function(arg) {
foo.bar(arg);
}
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.