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

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

關于JS淺拷貝和深拷貝的問題

關于JS淺拷貝和深拷貝的問題

慕田峪8701529 2017-11-28 20:25:40
function?People?()?{ this.name='codeman' }; People.prototype?=?{ showName?:?function?()?{ alert(this.name); }, showAge?:?function?()?{ alert(this.age); } }; function?Student?()?{ People.call(this); this.job='codeTeacher' }; for?(?var?k?in?People.prototype){ Student.prototype[k]=People.prototype[k];//這里的People.prototype[k]應該是一個方法(函數),也就是引用類型 ?????????????????????????????????????????//?那么當我更改Student里的showName方法的話,People里的不是也應該被改掉么,為什么沒改掉 } //?Student.prototype=People.prototype Student.prototype.showJob=function?()?{ alert(this.job); } Student.prototype.showName=function()?{ alert('superman');????????????? } var?peo?=?new?People(); peo.showName();?//還是‘codeman’
查看完整描述

2 回答

?
qq_藥藥_0

TA貢獻52條經驗 獲得超27個贊

首先你這個沒看錯的話不是深克隆。深克隆的意思是,當你循環完對象之后。如果對象里面還有引用數據類型,如數組。還要遍歷循環引用數據類型。你這個是淺克隆只循環了一遍,你尋找到的只是引用數據類型的指針,差不多就是這個意思。如果是深克隆,你自己還要寫個判斷函數,用遞歸。

查看完整回答
反對 回復 2017-11-29
  • 慕田峪8701529
    慕田峪8701529
    “Student.prototype[k]=People.prototype[k]”這里把people.prototype[k]賦值給Student.prototype[k],而People.prototype[k]如果是方法的話不就是屬于引用類型了么,引用類型直接用來賦值,當修改Student.prototype[k]的話,那eople.prototype[k]豈不是也會變?
  • 慕田峪8701529
    慕田峪8701529
    可能您沒理解我的問題的意思,我換個方式,還是上面這個例子,如果我使用Student.prototype=People.prototype的話,那么修改Student.prototype里的值,肯定會影響到People.prototype,因為對象的prototype屬性也是一個對象,即引用類型,那為啥當Student.prototype[k]=People.prototype[k]就不會互相影響了呢
  • 2 回答
  • 0 關注
  • 1412 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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