使用原生JS实现如下代码:var obj =$.extend(true, obj1, obj2);
//首先需要了解$.extend(true, obj1, obj2)这个方法的作用
//第一个参数:true, 表示在合并对象时, 进行深拷贝, 默认为浅拷贝
//最终将obj合并到target对象上去
function extend(deep, target, obj){
if(typeof deep == "boolean" && deep===true){
for(var attr in obj){
//若均为对象, 则递归调用, 进行深克隆
if( typeof target[attr] === "object" && typeof obj[attr] === "object") {
extend(true, target[attr], obj[attr]);
}
//若obj[attr]为对象, 而target[attr]不是对象,或不存在
else if(typeof obj[attr] === "object"){
//克隆obj[attr]副本, 赋值给target[attr]
if(obj[attr] instanceof Array){
target[attr] = extend(true, [], obj[attr]);
} else {
target[attr] = extend(true, {}, obj[attr]);
}
}
//若obj[attr]为普通数据类型(无论target[attr]]什么类型), 直接覆盖
else {
target[attr] = obj[attr];
}
}
}
//若deep参数为false, 直接浅克隆
if(typeof deep == "boolean" && deep===false){
for(var attr in obj){
target[attr] = obj[attr];
}
}
return target; //为处理方便, 返回target对象
}