麻烦老师再帮将下这段
1 | // 深克隆< br > function deepClone(o){< br > // 要判断o是对象还是数组< br > if(Array.isArray(o)){< br > // 数组< br > var result = [];< br > for(var i = 0; i < o.length ; i++){<br> result.push(deepClone(o[i]));< br > };< br > }else if(typeof o == 'object'){< br > // 对象< br > var result = {};< br > for(var k in o){< br > result[k] = deepClone(o[k]);< br > }< br > }else{< br > // 基本类型< br > var result = o;< br > }< br > return result;< br > }< br > |
59
收起
正在回答
2回答
同学你好,理解的是对的,祝学习愉快~
好帮手慕言
2021-06-15 10:58:09
同学你好,对于每句代码写了一下注释
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | // 定义一个方法用来实现深克隆 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积分~
来为老师/同学的回答评分吧