对象的栈堆
对象的深拷贝:复制值
var a = 10;
var b = a;
b = 20;
console.log(a); // 10
console.log(b); // 20
对象的浅拷贝:只复制地址,没有复制值;两个栈对应一个堆
var obj = {
name:"admin"
}
var obj2 = obj;
obj2.name = "root";
console.log(obj); //root
console.log(obj2); //root
以上可看出改变obj2的值,obj1的值也随着改变了,如何做到只复制值,不复制地址
利用重新创建对象的方式,遍历老对象的所有属性,逐个拷贝属性到新对象中:
var obj = {
name:"admin",
age:18,
sex:"女",
}
var obj2 = {};
for(var i in obj){
obj2[i] = obj[i];
}
obj2.name = "root";
console.log(obj.name); //admin
console.log(obj2.name); //root