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


为什么后推入的77,在前面输出两次obj2中也包含了77?
但是前两个在控制台显示Array(3),却包含了4个数组元素。
23
收起
正在回答
2回答
同学你好,是控制台的问题,可以看到Array中是3个,但是展开后是4个
{}对象是引用类型,一旦更新后,之前输出的也会更新,所以看到展开后的结果是一样的。
知道这种情况即可,祝学习愉快!
电磁护盾
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>
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星