第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

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

萌新!js可以通過解構(gòu)后得到的屬性獲取這個被解構(gòu)的對象嗎?各位有什么建議?

萌新!js可以通過解構(gòu)后得到的屬性獲取這個被解構(gòu)的對象嗎?各位有什么建議?

開滿天機 2019-08-14 19:50:21
js可以通過解構(gòu)后得到的屬性獲取這個被解構(gòu)的對象嗎?//創(chuàng)建一個對象objletobj={a:"Bob",b:newDate().toLocaleTimeString(),c:function(){console.log(this.a)}}//結(jié)構(gòu)得到它的屬性alet{a}=obj//那么有沒有什么方法可以把這個完整的obj對象,通過解構(gòu)后的a,表示出來呢?//下面是我的一些愚蠢的嘗試console.log(a.__proto__)//[String:'']console.log(a.constructor)//[Function:String]console.log(a.__proto__.constructor)//[Function:String]還有我發(fā)現(xiàn)解構(gòu)賦值之后,你再對原對象的值進行修改不會影響解構(gòu)得到的值let{a}=objobj.a="Jack"http://修改原對象的值console.log(a)//Bob所以說解構(gòu)賦值其實是重新創(chuàng)建了一個變量a,然后在解構(gòu)的同時把值復(fù)制過來了嗎?如果是這樣,那確實無法從a來重新獲得obj了。對了,js本身(或者說所有編程語言)就是無法用一個對象的某個屬性,重新又逆向得到這個對象的吧?求大牛解答一下
查看完整描述

2 回答

?
互換的青春

TA貢獻1797條經(jīng)驗 獲得超6個贊

從a獲得obj是肯定不行的
通過修改obj.a影響a是可以做到的。首先你要明白引用賦值和傳值賦值,
修改代碼
letobj={
a:[1,2,3],
b:{xx:1}
}
let{a,b}=obj
a.push(4)
b.xx=2;
console.log(obj.a)//[1,2,3,4]
console.log(obj.b)//{xx:2}
你如果企圖直接b=1來改obj.b的值,那是不可能的,因為之前b和obj.b只是指向同一個內(nèi)存地址,當(dāng)b=1后,b指向的位置改變了,但是obj.b的位置沒變.而采用我上面代碼的方式,就是改變那個地址的值,所以他們都會同時改變.
                            
查看完整回答
反對 回復(fù) 2019-08-14
?
忽然笑

TA貢獻1806條經(jīng)驗 獲得超5個贊

解構(gòu),不就是定義變量嗎。例如vara=obj.a,當(dāng)你改變obj.a時(此處a是普通數(shù)據(jù),非引用數(shù)據(jù)),a肯定不會被改動的。
而且a沒有任何屬性指向原對象obj,你多看下js的數(shù)據(jù)結(jié)構(gòu)就了解了
                            
查看完整回答
反對 回復(fù) 2019-08-14
  • 2 回答
  • 0 關(guān)注
  • 640 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號