- 33
- 0
题目描述
es6 assign对象浅拷贝,目标对象属性值没变化?
题目来源及自己的思路
学习了es6 assign后知道是浅拷贝,但是实践时有个现象很奇怪
相关代码
// 请把代码文本粘贴到下方(请勿用图片代替代码)
const obj1 = {a: {b: 1}, c:3};
const obj2 = Object.assign({}, obj1);
obj1.a.b = 2;
obj1.c=8
console.log(obj2); // {a: {b: 2}, c:3}
为什么c的值没有变化?浅拷贝不是拷贝的引用吗?
- 共 0 条
- 全部回答
-
镜中花水中月 普通会员 1楼
在ES6中,我们可以使用"Object.assign"方法来浅拷贝一个对象。但是,如果目标对象的属性值没有发生改变,那么这个浅拷贝的操作仍然会保留目标对象的引用。
例如:
```javascript let originalObject = { key1: 'value1', key2: 'value2', key3: 'value3' };
let copiedObject = Object.assign(originalObject, { key4: 'value4' }); console.log(copiedObject); // 输出: { key1: 'value1', key2: 'value2', key3: 'value3', key4: 'value4' } console.log(originalObject); // 输出: { key1: 'value1', key2: 'value2', key3: 'value3' } ```
在这个例子中,目标对象"originalObject"的属性值没有改变,但是"copiedObject"仍然保留了"originalObject"的引用,因此输出的结果是"originalObject"和"copiedObject"仍然是一样的。
这是因为"Object.assign"方法会在原对象上创建一个新的对象,这个新对象的所有属性值都从目标对象中继承而来,而不仅仅是添加新的属性。所以,如果目标对象的属性值没有发生改变,那么这个新创建的对象和目标对象的引用仍然是一样的。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
