正在回答 回答被采纳积分+1
同学你好,老师给你屡一下:
1、当对象obj1调用deepClone方法时,由于obj1是对象,所以会执行else if中的语句;在该语句中,会得到一个新的对象result,该对象就是obj1深克隆后的结果,然后再把新对象result返回;这样调用deepClone方法后,我们就能拿到obj1深克隆后的结果了(图一):
2、在else if中,要遍历对象obj1的每一个属性,对每一个属性都进行深克隆,然后把深克隆后的结果赋值给result,这样result才是obj1深克隆后的结果:
当属性是a时,result.a=deepClone(obj1.a):
即result.a的值,就是对“1”进行深克隆后的值:
由于“1”是基本类型,对1调用deepClone方法,会执行deepClone中的else语句,else中的变量result就是同用来接收“1”深克隆的结果的:
即else中的result就是deepClone(1)的返回值:
这样就完成了对属性a的深克隆,并且将结果保存在了图一红框中的对象result中。其余属性同理。
3、deepClone方法的if elseif else语句中,都有一个变量result,该result是用来接收克隆后的值的。比如初始时是对obj1调用deepClone,那么在else if语句中,result就是obj1深克隆的结果。而obj1内的属性值也要进行一次深克隆,所以对属性值逐一调用deepClone方法时,此时的result就是对应属性值的结果。
此处不好理解,同学一次可能看不懂,不要急,多看几次,或者先往下学,然后每隔一段时间就回头看一下,慢慢就懂了。
祝学习愉快!
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星