首页 > 解决方案 > 如何让这个关键字指向 webpack 中的 window 对象?

问题描述

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

this除了关键字,一切都很完美。

由于 webpack 在编译期间将我的所有代码包装到 iife 函数(模块)中,因此关键字this在函数中未定义,例如:

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

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

 });

});

在没有捆绑的普通角度应用程序中,这会得到windowObject.

除了使用 webpack 之外,我不想做大的改变(我有很多代码地方都有)。有没有办法在 webpack中保持this指向对象?window

标签: angularjswebpackecmascript-6babeljs

解决方案


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

从文档:

静态导入语句用于导入由另一个模块导出的绑定。无论您是否声明,导入的模块都处于严格模式。

有关详细信息,请参阅


推荐阅读