如何保持此关键字指向webpack中的窗口对象?

时间:2019-06-30 11:02:19

标签: angularjs webpack ecmascript-6 babeljs

我已经使用webpack和导入/导出语法将AngularJS应用程序转换为es6。

this关键字外,其他所有功能都可以正常运行。

由于webpack在编译过程中将我所有的代码都包装到了iife函数(模块)中,因此关键字this在以下函数中未定义:

.controller( …, function() {
 ...
 this.myFunc = function() {

  someFunction().then(function(data) {
   this.someVar = data;
   // this === window
  });

 });

});

在没有捆绑的正常角度应用中,这会获得window对象。

除了使用webpack之外,我不想进行大的更改(我在很多代码位置都具有此功能)。有什么方法可以使this指向webpack中的window对象?

1 个答案:

答案 0 :(得分:2)

Webpack确实强制代码使用“严格模式”。问题来自使用ES6 public语句。

从文档中:

  

静态import语句用于导入由另一个模块导出的绑定。不管您是否声明导入的模块都在strict mode中。

有关更多信息,请参见