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的指针又续上了?怎么续上的?
可能表述的不太清楚,主要是不太清楚指针是怎么变化的。
相关分类