摘要:圖數(shù)據(jù)類型圖引用類型深淺拷貝問題不知道什么是深拷貝和淺拷貝的請先去并在調(diào)試臺自己操作一下,這篇文章只會說明為何中會有這種問題。所以有的時(shí)候我們?yōu)榱吮苊鉁\拷貝,會用一些方式實(shí)現(xiàn)深拷貝。
首先要了解的js基礎(chǔ)
基本數(shù)據(jù)類型:Object、undefined、null、Boolean、Number、String、Symbol (ES6新加) Object包括: Array 、Date 、RegExp 、Function
兩者的重要區(qū)別在于:基本類型賦值給變量,變量的標(biāo)識符和變量的值都存放在內(nèi)存中的棧(Stack)里。引用類型的變量的標(biāo)識符在棧中,變量的值在內(nèi)存的堆(Heap)中。
舉一個(gè)通俗的例子:基本類型是你在內(nèi)存的棧中擁有一個(gè)咖啡店和鑰匙,引用類型是你只有咖啡店的鑰匙,你可以去內(nèi)存的堆中找到對應(yīng)的咖啡店地址,鑰匙環(huán)上有一個(gè)標(biāo)簽上面寫了,這個(gè)鑰匙是對應(yīng)的哪一家店,而這個(gè)標(biāo)簽就是指針。
不知道什么是深拷貝和淺拷貝的請先去Google并在Chrome調(diào)試臺自己操作一下,這篇文章只會說明為何JS中會有這種問題。
我舉個(gè)栗子
出現(xiàn)這種結(jié)果的原因是第二步將a賦給b只是將a的地址給了b(請注意,數(shù)組是引用類型),此時(shí)改變b其實(shí)就是改變了堆中a和b共同指向的地址的值。通俗一點(diǎn)講:a和b兩個(gè)人都拿到了一個(gè)同一家咖啡店的鑰匙,這時(shí)候在咖啡店多放一個(gè)杯子,自然兩人共同的咖啡店都有這個(gè)杯子。所以有的時(shí)候我們?yōu)榱吮苊鉁\拷貝,會用一些方式實(shí)現(xiàn)深拷貝。
關(guān)于ES6里的const,有些后臺人員甚至前端人員誤以為const賦值是常量,其實(shí)
const并不是變量的值不得改動(dòng),而是變量指向的那個(gè)內(nèi)存地址所保存的數(shù)據(jù)不得改動(dòng)。對于簡單類型的數(shù)據(jù)(數(shù)值、字符串、布爾值),值就保存在變量指向的那個(gè)內(nèi)存地址,因此等同于常量。但對于復(fù)合類型的數(shù)據(jù)(主要是對象和數(shù)組),變量指向的內(nèi)存地址,保存的只是一個(gè)指向?qū)嶋H數(shù)據(jù)的指針,const只能保證這個(gè)指針是固定的(即總是指向另一個(gè)固定的地址)
(此段引用自阮一峰)
const只是把鑰匙上的標(biāo)簽(指針)固定,所以:
小白第一次寫技術(shù)文章,如果有錯(cuò)誤還請多多指教,多謝!
參考資料[深入了解JS引用類型基本類型][5] [阮一峰ES6教程][6]
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/102692.html
摘要:理解的函數(shù)基礎(chǔ)要搞好深入淺出原型使用原型模型,雖然這經(jīng)常被當(dāng)作缺點(diǎn)提及,但是只要善于運(yùn)用,其實(shí)基于原型的繼承模型比傳統(tǒng)的類繼承還要強(qiáng)大。中文指南基本操作指南二繼續(xù)熟悉的幾對方法,包括,,。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處。 怎樣使用 this 因?yàn)楸救藢儆趥吻岸耍虼宋闹兄豢炊?8 成左右,希望能夠給大家?guī)韼椭?...(據(jù)說是阿里的前端妹子寫的) this 的值到底...
摘要:一篇文章徹底說清的深拷貝淺拷貝這篇文章的受眾第一類業(yè)務(wù)需要急需知道如何深拷貝對象的開發(fā)者。這篇文章分享的目的更多還是希望用一篇文章整理清楚深淺拷貝的含義遞歸實(shí)現(xiàn)思路以及小伙伴們?nèi)绻褂昧诉@種黑科技一定要清楚這樣寫的優(yōu)缺點(diǎn)。 一篇文章徹底說清JS的深拷貝and淺拷貝 這篇文章的受眾 第一類,業(yè)務(wù)需要,急需知道如何深拷貝JS對象的開發(fā)者。 第二類,希望扎實(shí)JS基礎(chǔ),將來好去面試官前秀操作...
摘要:一篇文章徹底說清的深拷貝淺拷貝這篇文章的受眾第一類業(yè)務(wù)需要急需知道如何深拷貝對象的開發(fā)者。這篇文章分享的目的更多還是希望用一篇文章整理清楚深淺拷貝的含義遞歸實(shí)現(xiàn)思路以及小伙伴們?nèi)绻褂昧诉@種黑科技一定要清楚這樣寫的優(yōu)缺點(diǎn)。 一篇文章徹底說清JS的深拷貝and淺拷貝 這篇文章的受眾 第一類,業(yè)務(wù)需要,急需知道如何深拷貝JS對象的開發(fā)者。 第二類,希望扎實(shí)JS基礎(chǔ),將來好去面試官前秀操作...
摘要:一篇文章徹底說清的深拷貝淺拷貝這篇文章的受眾第一類業(yè)務(wù)需要急需知道如何深拷貝對象的開發(fā)者。這篇文章分享的目的更多還是希望用一篇文章整理清楚深淺拷貝的含義遞歸實(shí)現(xiàn)思路以及小伙伴們?nèi)绻褂昧诉@種黑科技一定要清楚這樣寫的優(yōu)缺點(diǎn)。 一篇文章徹底說清JS的深拷貝and淺拷貝 這篇文章的受眾 第一類,業(yè)務(wù)需要,急需知道如何深拷貝JS對象的開發(fā)者。 第二類,希望扎實(shí)JS基礎(chǔ),將來好去面試官前秀操作...
閱讀 1884·2021-09-22 15:29
閱讀 3361·2019-08-30 15:44
閱讀 3570·2019-08-30 15:43
閱讀 1769·2019-08-30 13:48
閱讀 1497·2019-08-29 13:56
閱讀 2483·2019-08-29 12:12
閱讀 976·2019-08-26 11:35
閱讀 1059·2019-08-26 10:25