ES6名称空间导入:"此行为"

时间:2016-05-06 09:54:33

标签: javascript ecmascript-6

导入函数中this的值是什么,从命名空间导入调用? (根据ECMA规范)

// module.js
export function fun() {
  return this;
}

// main.js
import * as module from "./module.js";

let x = module.fun(); // What's the value of x here?

我的猜测是:它是module对象,但未在规范中找到明确答案。这里是否适用正常行为,或者ES6模块中是否存在名称空间导入的特殊内容?

2 个答案:

答案 0 :(得分:3)

不,这里没有特别的行为。 Module namespaces可能是外来对象,它将所有访问委托给某些内部,并且几乎是不可变的,但它们仍然只是对象。对它们的方法调用与任何其他对象的工作方式不同。

答案 1 :(得分:2)

根据我对规范的阅读,它将是模块名称空间异域对象(您在示例中绑定了名称module)。换句话说,出口袋。因此,在您的示例中,我相信您可以在下一个声明中致电x.fun()

据我所知......