function?setName(obj)?{
obj.name?=?"Nicholas";
obj?=?new?Object();
obj.name?=?"Greg";
}
var?person?=?new?Object();
setName(person);
alert(person.name);?//"Nicholas"person是一個帶有指向new Object的地址的棧,new Object是一個堆,obj是本地參數,setName(person) 意思是 本地參數obj=person,成為具有相同值和地址的棧,也指向new Object,在函數內部它的person.name='Nicholas',根據地址指向在new Object內保存了屬性,person=new Object(),函數內新建立了一個new Object的堆,此時person指向發生了改變,新的obj.name指向新的new Object,因此在obj?=?new?Object()時原指向已經失效,所以alert(person.name)彈出的是'Nicholas'.以上是我個人的理解,不知道對不對,還有應該怎么調用新堆中的name屬性?
幫我看看js引用類型吧
清風流光
2017-04-24 18:31:01