我正在使用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);
来解决了这个问题
但是我不明白第一个有什么问题。
你能给我一些解释吗?
答案 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);