今天看了书,发现下面的难以理解,请大神指点:
function setName(obj){
obj.name="Nicholas";
obj=new Object();
obj.name="Greg";
}
var person=new Object();
setName(person);
alert(person.name); //"Nicholas"
在把person传递给setName()之后,其name属性被设置为"Nicholas".让后,又将一个新的对象赋给变量obj,同时将其name属性设置为"Greg".如果person是按引用来传递,那么person就自动会被吸引改为指向其name的属性值为"Greg"的新对象.但是,但接下来访问person.name的时候,显示的值仍为"Nicholas".这说明即使在函数内部修改了参数的的值,但原始的引用人保持不变.实际上,但函数内部重写obj时,这个变量引用的就是一个局部对象了.而局部对象会在函数执行完毕之后立即被销毁.粗体为不明白的地方,希望可以指点.
function setName(obj){
obj.name="Nicholas";
obj=new Object();
obj.name="Greg";
}
var person=new Object();
setName(person);
alert(person.name); //"Nicholas"
在把person传递给setName()之后,其name属性被设置为"Nicholas".让后,又将一个新的对象赋给变量obj,同时将其name属性设置为"Greg".如果person是按引用来传递,那么person就自动会被吸引改为指向其name的属性值为"Greg"的新对象.但是,但接下来访问person.name的时候,显示的值仍为"Nicholas".这说明即使在函数内部修改了参数的的值,但原始的引用人保持不变.实际上,但函数内部重写obj时,这个变量引用的就是一个局部对象了.而局部对象会在函数执行完毕之后立即被销毁.粗体为不明白的地方,希望可以指点.
解决方案 »
- jquery插件,最后一句:$.data(this, 'carousel', obj); 是什么意思?
- extjs desktop 动态加载模块问题!
- Access中为什么只能插入数字和字母,而插不进文字去呢?数据表中我明明设置的是文本型的啊?
- 高手帮我看看
- 急...用onchange为什么会不行?(在线等)
- 关于JS逐行区块暂停式行滚动效果,一个很奇怪的问题
- 50分!求工资录入表格,单元格能录入工资项数据,能计算几个工资项的和,并能取得单元格中的数据传给服务器
- window.location="test6.html?id=i3 到test6页面后我怎么取出这个id?
- 对面的高手看过来......
- jquery 指定单选框选择没反应
- <img>控件添加onclick()和mouseover()事件
- js新手请教各位大神个小问题,望各位大神多帮帮小弟
相当于var obj=new Object();
就是在函数内部又创建了一个新的局部变量,它的作用域覆盖了参数obj的作用域。所以你更改对obj无效