码迷,mamicode.com
首页 > 其他好文 > 详细

培训课题目记录3

时间:2016-02-22 21:59:29      阅读:250      评论:0      收藏:0      [点我收藏+]

标签:

这一题我建议各位先去自己用浏览器试一试,发现结果不符合你所想再回来看下面的内容。
        同样还是先放源码:技术分享
跟之前一样在关键部分标了序号,那么开始吧。
先别看setObj的函数体部分,等到它第一次被调用的时候再回头去看。我们从var p=..这里开始看。
 var p={name:"xixi",age:24}  这段声明了一个全局变量p引着一个对象,姑且称这个对象为A。然后我们把p扔给setObj函数:setObj(p);  好,开始执行这个函数:
            因为p当中存放的是对象A的地址,所以①所进行的是将函数外面的p所存放的地址赋给函数的局部变量:o,此时o中也放着A的地址。也就是说我们接下来如果对o进行操作,就相当于对A进行操作。至此程序里有两个变量:在window下的p以及在setObject函数的活动对象内的局部变量o。  
               ②赋一个空对象给o。此时o不再指向A,转而指向一个空对象,姑且称这个对象为B。
               ③给上面刚新建的空对象B新建一个属性name,并赋值为小红。 
 
                最后console.log(p);至此请思考一下,p从最开始到现在,有放开过它一开始指向的那个对象么?  是没有的。p从头到尾一直引着对象A。而在对象A身上只发生过一件事:①那里让它的name的值起变化。如果还没明白为什么 p 一直引着A 请再看看蓝色字部分。

所以输出结果是 :技术分享
========================================================================================================= 
第二部份的代码只是少了上面的②③两步而已,就略过了。技术分享

                                                                                            

                                                                                                        ————以上内容皆有本人原创,欢迎在评论区一起讨论、对文章进行纠错。如需转载请邮箱联系博主征得同意,并注明转载出处 博主邮箱:523893659@qq.com

培训课题目记录3

标签:

原文地址:http://www.cnblogs.com/strike2warfare/p/5208125.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!