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的指針又續(xù)上了?怎么續(xù)上的?可能表述的不太清楚,主要是不太清楚指針是怎么變化的。
JS函數參數傳遞的疑問,引用類型指針是怎么變化的?
繁星coding
2018-11-13 20:04:37