js delete删除对象的某个属性发现即使把当前对象重新赋值给临时变量后删除临时变量中的属性最终原对象的属性也会被删除的解决方法

本文通过实例解析了JavaScript中对象属性删除的误区,即直接赋值仅拷贝引用而非创建新对象。深入探讨了如何通过JSON.stringify和JSON.parse实现对象的深拷贝,避免原对象属性被意外修改。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

js delete删除对象的某个属性发现即使把当前对象重新赋值给临时变量后删除临时变量中的属性最终原对象的属性也会被删除例如

<html>

<head>
</head>

<body>
<script>
var obj={
"name":"wdl",
"phoneNum":12345678901
}
var newobj=obj;
delete newobj["phoneNum"]
alert("obj"+JSON.stringify(obj))//{"name":"wdl"}
alert("newobj"+JSON.stringify(newobj))//{"name":"wdl"}

</script>
</body>

</html>

上边的例子我们发现确实被删除了,至于为什么会这样,是因为我们用等于号直接赋值一个新对象的时候,并不是拷贝了一个新对象而只是把原对象的引用地址赋值给新对象,所以我们再修改新对象的时候会影响原对象。

知道了原因,就好解决了,我们现在知道我们应该是复制出一个新对象,而不是引用地址的指向,解决方法如下:

<html>

<head>
</head>

<body>
<script>
var obj1={
"name":"wdl",
"phoneNum":12345678901
}
var tempobj=JSON.stringify(obj1);
var newobj1=JSON.parse(tempobj);
delete newobj1["phoneNum"]
alert("obj1"+JSON.stringify(obj1))//{"name":"wdl","phoneNum":12345678901}
alert("newobj1"+JSON.stringify(newobj1))//{"name":"wdl","phoneNum":12345678901}
</script>
</body>

</html>

如果谁有更好的方法还请留言告知,十分感谢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值