function setName(obj) {
obj.name = 'Nicholas';
obj = new Object();
obj.name = "Greg"; console.log(obj.name); // "Greg"}
var person = new Object();
setName(person);
alert(person.name)setName这个函数理解起来有点障碍:person这个对象作为参数传入setName函数,局部参数obj,按照书本的说法按值传递,那么这里的值应该是“指针”,所以,obj复制了一份指向person的指针,obj存放的指针指向的也是person。接着,又new实例化一个对象,这个对象指针保存在了参数obj中,所以这个时候obj指向了一个新的对象,指向person也就断开了?然后,后面思路就混乱了,因为obj这只是局部参数,obj.name输出的是Greg。最后.alert又弹出Nicholas,说明,前面obj断开person的指针又续上了?怎么续上的?可能表述的不太清楚,主要是不太清楚指针是怎么变化的。
添加回答
举报
0/150
提交
取消