Sorry if question is too simple, but I'm missing something here. Just switched an ES5 module that looked like:
module.exports = {
func1: function(a, b) {...},
func2: function(a, b) {...}
};
To an ES6 class that looks like this:
export default class {
func1(a, b) {...}
func2(a, b) {...}
}
And all was well: in both cases I could export mod from 'module';
and call mod.func1(a, b)
and mod.func2(a, b)
.
However, I have a function that recieves a module function to call:
var caller = function(func, val1, val2) {
let a = something(val1);
let b = something(val2);
return func(a, b);
};
When I call caller(mod.func1, x, y)
I get the desired result with the first implementation, but an undefined is not a function
with the second.
Printing out the value of mod.func1
returns [Function]
in both cases, but clearly something else is returned from an ES6 class.
What am I doing wrong, and how can I get a class function I can call in another function?
Update: with the second implementation, I forgot to add the instantiation code:
import Mod from 'module';
var mod = new Mod();
mod.func1(a, b)
works with the exported class. – Boomod.func1
method as a function to somewhere else requires you to deal with thethis
context in callbacks problem, but that shouldn't change when switching from an object to a class instance either. Can you show us the body of your function? – Boo