麻烦老师再帮将下这段

麻烦老师再帮将下这段

        // 深克隆
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;
}


正在回答

登陆购买课程后可参与讨论,去登陆

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返回。


另外:视频中老师用了一节课为大家讲解深克隆,边讲解边写代码,肯定比老师只用文字描述更好理解,同学可以跟着视频的讲解再了解一下,如果哪句代码理解不了,可以提问,老师帮助解答。


祝学习愉快~

  • 提问者 慕UI4313976 #1

    老师,这个为例,递归最后会深入到不符合if和else if,最后一个基本单位基本之类型,可以这样理解吗?

    2021-06-15 21:11:27
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师