您好,登錄后才能下訂單哦!
這篇“es6解構(gòu)是不是深拷貝”文章的知識(shí)點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價(jià)值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“es6解構(gòu)是不是深拷貝”文章吧。
es6解構(gòu)不是深拷貝。若解構(gòu)的原對(duì)象是一維數(shù)組或?qū)ο?,那么解?gòu)就是深拷貝,若解構(gòu)的原對(duì)象是多維數(shù)組或?qū)ο?,那么解?gòu)就是淺拷貝,因?yàn)榻鈽?gòu)不能對(duì)多維數(shù)組達(dá)到深拷貝的效果,所以解構(gòu)不能算是深拷貝,應(yīng)是淺拷貝。
本教程操作環(huán)境:windows10系統(tǒng)、ECMAScript 6.0版、Dell G3電腦。
關(guān)于ES6中的解構(gòu)賦值的知識(shí)點(diǎn),想必大家都不陌生。所謂解構(gòu)賦值就是利用一種模式來快速從目標(biāo)結(jié)構(gòu)中取出數(shù)據(jù)的方案,例如:
通過解構(gòu),我們很輕松的就從數(shù)組和對(duì)象中取出了我們想要的數(shù)據(jù)。但是,可能大家會(huì)問,這與深拷貝與淺拷貝又有什么關(guān)系呢?
咱們,先回顧一下關(guān)于深拷貝和淺拷貝,
所謂的淺拷貝和深拷貝:淺拷貝是在在拷貝過程中,遍歷時(shí)那部分為對(duì)象/數(shù)組類型指向原來的地址,而深拷貝,則是完全開辟新的內(nèi)存地址。也就是說,
深拷貝:修改新變量的值不會(huì)影響原有變量的值。默認(rèn)情況下基本數(shù)據(jù)類型(number,string,null,undefined,boolean)都是深拷貝。
淺拷貝:修改新變量的值會(huì)影響原有的變量的值。默認(rèn)情況下引用類型(object)都是淺拷貝。
那么,在解構(gòu)中,究竟是深拷貝還是淺拷貝呢?
在上述代碼中,我們分別對(duì)數(shù)組和對(duì)象進(jìn)行解構(gòu),然后又修改了解構(gòu)之后的變量的值,然后分別打印變量和原數(shù)組和對(duì)象,結(jié)果如下:
我們發(fā)現(xiàn),原數(shù)組和對(duì)象的數(shù)據(jù)并沒有改變,是不是就說明解構(gòu)賦值就是深拷貝了呢??
我們把例子稍微修改一下,代碼如下:
我們?yōu)閷?duì)象新增了一個(gè)data屬性,data的數(shù)據(jù)為一個(gè)數(shù)組,然后解構(gòu)之后,我們修改了data的數(shù)據(jù),結(jié)果如下:
我們發(fā)現(xiàn),解構(gòu)出來的變量data的改變引起了原來數(shù)據(jù)的改變,也就是所,解構(gòu)賦值其實(shí)依然是淺拷貝。
以上就是關(guān)于“es6解構(gòu)是不是深拷貝”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對(duì)大家有幫助,若想了解更多相關(guān)的知識(shí)內(nèi)容,請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。