深克隆函数的再次思考后的一点想法和疑惑
问题描述:
我觉得这里要先进入for循环,然后在循环里面判断每个循环出来的值尽行比较,逐步把值推入变量result中去,在这里特别理解不了最后面那个o,这里的o不是代表一个对象obj1吗?怎么就变成了一个基本类型值呢?
正在回答 回答被采纳积分+1
你可以理解为盗梦空间,盗梦空间最上面一层是整个对象obj1,但是整个对象obj1里面还有第二层梦境,这里的第二层梦境也就是整个obj1对象里面还有一个对象或者是数组。
举例:var obj1 = { 第一层梦境, 第一层梦境的东西1, { 第二层梦境 } ,第一层梦境的东西2 }。
那么要进入第二层梦境,是不是要先进行判断呀?判断这个是一个梦境还就只是第一层梦境里面的一个东西。
这个时候我们就要把整个第一层梦境里面的东西全部都检查一遍,因为电脑只有靠类型来判断是不是梦境。所以我们得使用for循环来把第一层的东西全部检查一遍。
我们在刚开始的时候就默认的第一层是梦境也就是对象,那么我们就直接把等一层梦境全部都丢进参数o里面,for循环就会把第一层梦境里面的东西全部拆开成一个一个的,由于电脑是只有一个一个的检查,所以我们就得把第一层梦境里的所有东西一个一个的传入到deepClone()这个检查机里面,如果在检查机里面发现还有一层梦境,就会继续进那一层梦境继续一个一个的传入检查,要是检查到只是那层梦境的一个东西而不是梦境就通过检查机的出口把东西传出检查机。
当一层梦境全都检查结束了就直接克隆,从最里的那层梦境开始克隆,一直克隆到最外面一层,然后再把整个梦境输出出来。就完成了整个的拷贝,这是我的理解,希望能帮助同学
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星