4.1.2浅拷贝和深拷贝
浅拷贝:
只是将对象的地址赋给了两个不同的变量,归根结底只有一个****对象,并没有拷贝出另外一个对象**
深拷贝:**
首先创建一个新的空对象用于备用,然后通过for循环进行遍历原对象的所有属性和方法,并对应的将其赋值到新的对象中
var a={
name:"li zi",
age:18,
class:"1班"
}
// 克隆,深拷贝与浅拷贝
// 浅拷贝
var d=a;
console.log(d);
//判断两个对象是否相等,true代表两个变量指向相同,并没有完成克隆,而仅仅是将原对象的地址赋给了新的,他们的指向是同一个对象
console.log(a===d);
// 深拷贝
function clone(obj){
//1.创建一个新对象等着
var b={};
// 2.遍历原对象中的所有属性
for(var key in obj){
// 3.获取原对象中的属性值
var key=obj[key];
// 4.将原对象中的属性名和属性值,强行赋值给新对象
b[key]=key;
}
return b;
}
var s=clone(a);
console.log(s);
console.log(a===s);