84669 人学习
152542 人学习
20005 人学习
5487 人学习
7821 人学习
359900 人学习
3350 人学习
180660 人学习
48569 人学习
18603 人学习
40936 人学习
1549 人学习
1183 人学习
32909 人学习
如上图,据描述,Object.assign()为浅拷贝, 为什么改变属性a不是指向同一个引用,而b.c指向了同一个引用?
var deepCopy = function(src) { var ret = {} for (var k in src) { ret[k] = typeof src[k] ==='object' ? deepCopy(src[k]) : src[k] } return ret }
深拷贝一直用这个方法, Object.assgin 只能深拷贝第一层, 深层的还是浅拷贝, 记住这个就行了
雷雷
浅拷贝:如果属性元素为复杂杂数据类型时,内层元素拷贝引用;slice, concat, jQury的$.extend({},obj)都是浅拷贝;点击这里了解详情
slice
concat
jQury
$.extend({},obj)
深拷贝一直用这个方法, Object.assgin 只能深拷贝第一层, 深层的还是浅拷贝, 记住这个就行了
雷雷
浅拷贝:如果属性元素为复杂杂数据类型时,内层元素拷贝引用;
slice
,concat
,jQury
的$.extend({},obj)
都是浅拷贝;点击这里了解详情