var arr = new Array(3).fill({
name: 'deng',
age: 18,
job: 'software'
})
console.log(arr)
arr[0].name = 'dengbbbb'
console.log(arr)
这样只改变其中一个属性 为啥其他对象相应的属性也跟着改变了啊 有大佬知道这个是什么问题么???
var arr = new Array(3).fill({
name: 'deng',
age: 18,
job: 'software'
})
console.log(arr)
arr[0].name = 'dengbbbb'
console.log(arr)
这样只改变其中一个属性 为啥其他对象相应的属性也跟着改变了啊 有大佬知道这个是什么问题么???
var arr = Array.apply(null, { length: 3 }).map(() => ({
name: 'deng',
age: 18,
job: 'software'
}));
arr[0].name = 'dengbbbb';
console.log(arr);
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
3 回答833 阅读✓ 已解决
3 回答1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
因为Array.fill()如果填充类型为对象,则为浅拷贝。数组内的3个对象指向的都是同一个内存地址。
你可以这样做
关于深拷贝与浅拷贝可以参考以下文章
js 深拷贝 vs 浅拷贝