Извините, если вопрос слишком простой, но я что-то здесь упускаю. Просто переключил модуль ES5, который выглядел так:
module.exports = {
func1: function(a, b) {...},
func2: function(a, b) {...}
};
К классу ES6, который выглядит так:
export default class {
func1(a, b) {...}
func2(a, b) {...}
}
И все было хорошо: в обоих случаях я мог export mod from 'module';
и звонить mod.func1(a, b)
и mod.func2(a, b)
.
Однако у меня есть функция, которая получает функцию модуля для вызова:
var caller = function(func, val1, val2) {
let a = something(val1);
let b = something(val2);
return func(a, b);
};
Когда я вызываю caller(mod.func1, x, y)
, я получаю желаемый результат с первой реализацией, но undefined is not a function
со второй.
Распечатка значения mod.func1
возвращает [Function]
в обоих случаях, но явно что-то еще возвращается из класса ES6.
Что я делаю неправильно и как мне получить функцию класса, которую я могу вызвать в другой функции?
Обновление: во второй реализации я забыл добавить код создания экземпляра:
import Mod from 'module';
var mod = new Mod();
mod.func1(a, b)
работает с экспортированным классом. - person Bergi   schedule 02.08.2015mod.func1
как функции в другое место требует, чтобы вы имели дело сthis
контекст в обратных вызовах проблема, но это также не должно меняться при переключении с объекта на экземпляр класса. Можете ли вы показать нам тело вашей функции? - person Bergi   schedule 02.08.2015