浅拷贝(只复制了对象的一层)
---------------------浅拷贝(只复制了对象的一层)------------------
//将对象obj1的内容拷贝给obj2
// 对象obj1
var obj1 = {
name: 'salay',
age: 23,
hoppy: 'soprt',
//dog对象
dog: {
name: '小明',
}
}
// 对象obj2
var obj2 = {}
// 使用for-in循环遍历obj1对象
for (var key in obj1) {
obj2[key] = obj1[key];
}
//修改obj1中的属性的值
obj1.age = 45;
obj1.dog.name = "小红";
console.log(obj1);
console.log(obj2);
输出发现obj2对象的age属性没有改,但是dog对象的name属性改为跟obj1中的一样了
以上就是浅拷贝,obj1中的属性赋值给obj2,如果是基本数据类型的话,相当于复制一份相同的值
如果是对象的话,复制的是对象的引用地址(只复制了对象的一层)
---------------------把浅拷贝的代码封装成函数---------------------------
// 我们可以把拷贝的代码封装成一个函数,以便下次使用
// 将o1拷贝给o2
function easyCopy(o1, o2) {
for (var key in o1) {
o2[key] = o1[key];
}
}
网友评论