如果问题太简单的话,我很抱歉,可能是我漏掉了某些东西。 我刚刚将一个看起来像这样的ES5模块转换为:
module.exports = {
func1: function(a, b) {...},
func2: function(a, b) {...}
};
将以下ES6类进行翻译:
给定一个长这样的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)
能够与导出的类一起使用。 - Bergimod.func1
方法作为函数传递到其他地方需要处理回调中的this
上下文问题,但是当从对象切换到类实例时,这不应该改变。你能展示一下你的函数体吗? - Bergi