Webpack javascript Object.assign与“ =”

时间:2018-07-19 10:37:33

标签: javascript webpack dynamic-import

我正在使用webpack运行一个项目,但遇到了问题。我解决了,但我想了解事情的进展。

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

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

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

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

您会看到me对象是使用Object.assign分配的,而当我们更改me.x时,它不会反映在对象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);