什么是深拷贝和浅拷贝?
一浅拷贝:
1.(1)
var arr=[1,2,3]
var arr1=arr
这个就是简单的浅拷贝 但是:如果要改变arr1所引用的数据:arr1[0]=100时,那么arr[0]的值也是100。
(2)Object.assign()
var obj = { a: {a: "hello", b: 21} };
var obj1 = Object.assign({}, obj); obj1
.a.a = "changed";
console.log(obj.a.a); // "changed"2.用json对象方式
var obj={
a:'1',
b:'2',
list:[a,b,c]
}
var obj2={}
for(let key in obj){
obj2[key]=obj[key]
}
obj2.list[0]=d
那么输出结果就是:{a:'1',b:'2',list:[d,b,c]}
二深拷贝
1.JSON.parse(JSON.stringify(arr))
2.递归拷贝
function isObj(obj) {
return (typeof obj === 'object' || typeof obj === 'function') && obj !== null } function Copy(obj) { let tempObj = Array.isArray(obj) ? [] : {} for(let key in obj) { tempObj[key] = isObj(obj[key]) ? deepCopy(obj[key]) : obj[key] } return tempObj } 3.$.extend() 使用:
var obj={
name:'www',
age:'10'
}
$.extend(true,$,obj);
$.name="张三"
$.age="20"
输出结果:obj ={name:"张三",age:"20"}

浙公网安备 33010602011771号