【发布时间】:2015-08-01 20:05:18
【问题描述】:
对不起,如果问题太简单了,但我在这里遗漏了一些东西。 刚刚切换了一个看起来像这样的 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)是否适用于导出的类。 -
忘记了实例化代码 - 现在添加了。谢谢。
-
嗯,将
mod.func1方法作为函数传递到其他地方需要您处理thiscontext in callbacks 问题,但是从对象切换到类实例时也不应该改变。你能告诉我们你的函数体吗?
标签: javascript node.js ecmascript-6 es6-module-loader