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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

修改studnet.prototype整個,為什么不影響已經(jīng)new了的實(shí)例?

”studnet.prototype.x這里如果只是動態(tài)的修改studnet.prototype上面會被動態(tài)的修改,但是如果一整個studnet.prototype都全部修改的話,并不會影響已經(jīng)new了的實(shí)例”
不懂為啥會不影響?感覺老師講的不是很明白。。。。不知道是不是我理解問題,請教下!

正在回答

6 回答

可以這樣理解:bosn.__proto__和student.prototype都是引用,在創(chuàng)建bosn的時候,bosn.__proto__指向了student.prototype指向的對象,之后你修改student.prototype指向的對象,是不會影響bosn.__proto__指向的對象的

0 回復(fù) 有任何疑惑可以回復(fù)我~
#1

怯凡 提問者

非常感謝!
2016-09-04 回復(fù) 有任何疑惑可以回復(fù)我~

因?yàn)樵趎ew一個Student類型的bosn對象實(shí)例時,會將Student.prototype的值賦值給bosn._proto_,而Student.prototype的值是它所指向的那個對象的地址(對象本身存在堆內(nèi)存中),而[Student.prototype:對象地址]存在棧內(nèi)存中,當(dāng)通過Student.prototype.x修改對象時,修改的是存在堆內(nèi)存的對象本身,因?yàn)閎osn._proto_存的是對象的地址,所以bosn(包括所以已創(chuàng)建或指向這個地址的對象)肯定也會跟著一起變啦。但當(dāng)你給Student.prototype賦予一個新對象的值時,會在堆內(nèi)存新開辟一塊地址存放這個對象,并且將對象的地址傳給Student.prototype,所以原來的對象肯定不會跟著變啦,它們指向的都不是同一個對象。如果你能好好理解上邊這一段,你就會明白JavaScript的引用傳遞和深拷貝淺拷貝等問題。

1 回復(fù) 有任何疑惑可以回復(fù)我~

在前面的例子中 變量a和變量b的內(nèi)存中保存的是個指針(即引用),也就是說它們所指向同一個對象。所以修改a的屬性,會影響b的屬性。但是當(dāng) a = 10; ( 或者 a = { y: 5}; ) 變量a中保存的值為5(或者引用另一個對象{ y: 5}的地址),再修改屬性就不會影響變量b了。

1 回復(fù) 有任何疑惑可以回復(fù)我~

這是因?yàn)閖s的坑比特性,當(dāng)復(fù)制保存著對象的某個變量時,操作的是對象的引用。但在為對象添加屬性時,操作的是實(shí)際的對象。舉個例子:

var?a?=?{?x:?1?};??//?創(chuàng)建對象并將對象的引用傳遞給變量a(保存在內(nèi)存中)
var?b?=?a;?//?將對象的引用傳遞給變量b
a.x?=?2;??//?修改變量a內(nèi)存中保存的引用所指向的對象的屬性x
console.log(b.x);?//?2
a?=?10;?//?修改變量a的值
console.log(b);?//?object

這種特性僅僅限于引用類型,基本類型和其他語言一樣按照值傳遞。比如 a = 2 ; ? ?b = a; ? ? a = 3; ? ?console.lof(b); // 2


1 回復(fù) 有任何疑惑可以回復(fù)我~

可是 改prototype中的一些就會影響到,改全部就不會影響。總感覺怪怪的。。

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉個例子,一個女的生了個孩子,然后她去整容,只會影響她自己的樣子,不會影響自己孩子的樣子,這就是為啥new實(shí)例不會被修改。

1 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消

修改studnet.prototype整個,為什么不影響已經(jīng)new了的實(shí)例?

我要回答 關(guān)注問題
微信客服

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

幫助反饋 APP下載

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

公眾號

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