麻烦老师再帮将下这段
// 深克隆
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 星