天马行空、脚踏实地~
最近学到的深拷贝的简单写法:
function deepClone(obj){
// typeof null的结果是object,所以单独拿出来
if(obj == null ){
console.log('请传入对象类型的数据')
return;
};
//如果不是object类型直接返回
if( typeof obj !== 'object'){
return obj;
}
// 这里要注意一下 ,生成一个空newobj
let newObj = new obj.constructor();
for(let key in obj){
newObj[key] = deepClone(obj[key]);
}
return newObj;
}
var a = {name: '张三'};
let c = [1,2,4];
var a1 = deepClone(a);
var c1 = deepClone(c);
console.log('a',a); // {name: '张三'};
console.log('c',c); //[1,2,4]
console.log('c1',c1); //[1,2,4]
a.name= '李四'
c[0] = 0;
console.log('a',a); // {name: '李四'};
console.log('c',c); //[0,2,4]
console.log('c1',c1); // 还应该是[1,2,4]
var d = {name:'张三',detail:{age: 14}}
var d1 = deepClone(d);
console.log('d',d); // {name:'张三',detail:{age: 14}}
console.log('d1',d1); //{name:'张三',detail:{age: 14}}
d.detail.age = 15
console.log('d',d); // {name:'张三',detail:{age: 15}}
console.log('d1',d1); //{name:'张三',detail:{age: 14}}