今天看着这么一段 代码 讲浅拷贝1、按道理讲 浅拷贝 不是应该仅仅复制对象的引用,而不是对象本身,那么 obj.c和obj.d都应该被修改了呀?2、var cloneObj=obj ,算不算浅拷贝,怎么理解?
1 回答
BIG阳
TA贡献1859条经验 获得超6个赞
var cloneObj=obj // 这才是浅拷贝,改变这里会联动改变
// 这个方法不是浅拷贝,是一级深拷贝,二级拷贝是浅拷贝,因为obj[i] = initalObj[i];就相当于你的var cloneObj=obj 。
function simpleClone(initalObj) {
var obj = {};
for ( var i in initalObj) {
obj[i] = initalObj[i]; ////////注意这里 除非你递归赋值
}
return obj;
}
所以
cloneObj.a = "changed"; // obj不变
cloneObj.b.a = "changed"; // obj改变
添加回答
举报
0/150
提交
取消