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>
如果谁有更好的方法还请留言告知,十分感谢。