0

我正在使用 webpack 运行一个项目并遇到问题。我解决了它,但我想了解事情是如何运作的。

我有一个带有模块名称的数组,例如[module1,module2,module3]. 我使用foreach循环这个数组并使用以下语法导入每个模块。

import('./' + moduleName).then(function (promise) {
      var me = promise.default(element);    
})

在每个模块中,我创建并返回对象“我”。每个模块都有特定的功能和参数,这些对问题并不重要。

export default function (element, options) {
     var me = this;
     // some other code
     return me;
}

当我在一页上有 2 个模块时会出现问题。赋值me = this,即使我传递不同的选项,总是以某种方式创建具有相同参数的相同对象。

我通过将分配更改为var me = Object.assign({},this); 但我不明白第一个有什么问题来解决它。你能给我一些解释吗?

4

1 回答 1

0

Object.assign克隆对象属性。但=会复制对象的引用。

您可以在下面的示例中检查它。

您可以看到meobject 是使用分配的Object.assign,当我们更改me.x它时,它不会反映在 object 中a。但是在第二种情况下,当我们更改me2.x它时,它也会更新值b.x

var a = { x: 1 };
var me = Object.assign({}, a);
me.x = 2;
console.log(a);
console.log(me);

var b = { x: 1 };
var me2 = b;
me2.x = 2;
console.log(b);
console.log(me2);

于 2018-07-19T11:14:02.487 回答