麻烦老师再帮将下这段
// 深克隆
function deepClone(o){
// 要判断o是对象还是数组
if(Array.isArray(o)){
// 数组
var result = [];
for(var i = 0; i < o.length; i++){
result.push(deepClone(o[i]));
};
}else if(typeof o == 'object'){
// 对象
var result = {};
for(var k in o){
result[k] = deepClone(o[k]);
}
}else{
// 基本类型
var result = o;
}
return result;
}
59
收起
正在回答
2回答
同学你好,理解的是对的,祝学习愉快~
好帮手慕言
2021-06-15 10:58:09
同学你好,对于每句代码写了一下注释
// 定义一个方法用来实现深克隆 function deepClone(o) { // 先判断o是对象还是数组 if (Array.isArray(o)) { // 如果是数组,那就声明一个空数组,利用for循环,把值放入到deepClone方法中再判断,把得到的结果推入到result中 var result = []; for (var i = 0; i < o.length; i++) { result.push(deepClone(o[i])); } } else if (typeof o == 'object') { // 如果是对象,那就声明一个空对象,利用for in,把值放入到deepClone方法中再判断,把得到的结果推入到result var result = {}; for (var k in o) { result[k] = deepClone(o[k]); } } else { // 如果是基本类型值,直接把值赋值给result var result = o; } // 最终返回result return result; }
以视频中的obj1为例,当对象obj1调用deepClone方法时,由于obj1是对象,所以会执行else if中的语句;在该语句中,会得到一个新的对象result,然后再把新对象result返回。
另外:视频中老师用了一节课为大家讲解深克隆,边讲解边写代码,肯定比老师只用文字描述更好理解,同学可以跟着视频的讲解再了解一下,如果哪句代码理解不了,可以提问,老师帮助解答。
祝学习愉快~
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星