为什么后推入的77,在前面输出两次obj2中也包含了77?

为什么后推入的77,在前面输出两次obj2中也包含了77?

http://img1.sycdn.imooc.com//climg/61243f9a09f3a77705860654.jpg

http://img1.sycdn.imooc.com//climg/61243fab09451a4903160456.jpg

为什么后推入的77,在前面输出两次obj2中也包含了77?

但是前两个在控制台显示Array(3),却包含了4个数组元素。

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

同学你好,是控制台的问题,可以看到Array中是3个,但是展开后是4个

http://img1.sycdn.imooc.com//climg/61245d9b096e6fa404150121.jpg

{}对象是引用类型,一旦更新后,之前输出的也会更新,所以看到展开后的结果是一样的。

知道这种情况即可,祝学习愉快!

电磁护盾 提问者 2021-08-24 08:41:18
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
var obj1={
a:1,
b:2,
c:[44,55,66]
};

var obj2={};

for(var k in obj1){
// 给obj2添加相应的k属性
// 每遍历一个k属性,就给obj2也添加一个同名的k属性,值和obj1的k属性值相同
obj2[k]=obj1[k];
}

console.log(obj2);
obj1.a++;
console.log(obj2); // obj2的a属性值不变

obj1.c.push(77);
console.log(obj2); // obj2的c属性的数组也变化
</script>
</body>
</html>


  • 6hEd #1

    建议重看 引用类型,复杂类型 的分别。👍

    2021-08-25 06:39:03
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师