亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

幫我看看js引用類型吧

幫我看看js引用類型吧

清風流光 2017-04-24 18:31:01
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屬性?
查看完整描述

3 回答

?
qq_青棗工作室_0

TA貢獻446條經驗 獲得超754個贊

理解的對。obj?=?new?Object()時,obj的原指向已經失效。但是,person依然在指向著。

要調用局部變量里新堆的name屬性,可以return obj;

或者,用一個全局變量來指向它 window.newObj = obj;

或者,直接用外部變量person指向它 person = obj;

查看完整回答
1 反對 回復 2017-04-25
  • 3 回答
  • 0 關注
  • 1634 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號