相关代码
var des = 1;
var obj = {b: 2};
for(var key in obj) {
console.log(des, key); // 1, "b"
des[key] = obj[key]; // ???
console.log(des[key]); // undefined
}
问题
des[key] = obj[key] 这句如何执行? 代码并没有报错, 但des[key]打印结果是undefined
代码来源
function deepCopy(des, src) {
if(!src || typeof src !== 'object') {
return des;
}
for (var key in src) {
let obj = src[key];
if(obj && typeof obj === 'object') {
des[key] = des[key] || {};
deepCopy(des[key], obj);
} else {
des[key] = src[key];
}
}
return des;
}
console.log(deepCopy({a: 1}, {a: {b: 2}})); // {a: 1}
console.log(deepCopy({a: {}}, {a: {b: 2}})); // {a: {b: 2}}
代码来源,des[key] = des[key] || {};
des[key]已经是一个对象了,是一个引用类型
你自己的例子,des是一个非引用类型是不可以直接[key]
友情提示:代码来源这种clone是有问题的。
可参考:https://segmentfault.com/a/11...