1 function hehe(o,oo){ 2 o = ‘xoxo‘ 3 oo.ins.name = ‘zhangmingzhi;‘ 4 } 5 var obj = { 6 ins:{ 7 8 } 9 } 10 hehe(obj.ins,obj); 11 console.log(obj);
情况1,传入参数为oo,为一个引用类型的时候,参数修改的值会体现在外部 即obj中。
情况2,传入参数为o,为一个引用类型,参数修改的值在外部obj.ins体现不出来
根据情况2的猜想:可能是obj在栈上的引用地址可能只是储存了obj 而ins则在堆上真实的地址上。如果把obj.ins作为参数传递进去的话,那么操作這个传入的值就是没有栈地址的值,自然在方法里修改的就体现不到外面的obj对象中了
PS:以上只是猜想,回去翻翻书。。
时间: 2024-11-06 09:46:33