摘要:圖數據類型圖引用類型深淺拷貝問題不知道什么是深拷貝和淺拷貝的請先去并在調試臺自己操作一下,這篇文章只會說明為何中會有這種問題。所以有的時候我們為了避免淺拷貝,會用一些方式實現深拷貝。
首先要了解的js基礎
基本數據類型:Object、undefined、null、Boolean、Number、String、Symbol (ES6新加) Object包括: Array 、Date 、RegExp 、Function
兩者的重要區別在于:基本類型賦值給變量,變量的標識符和變量的值都存放在內存中的棧(Stack)里。引用類型的變量的標識符在棧中,變量的值在內存的堆(Heap)中。
舉一個通俗的例子:基本類型是你在內存的棧中擁有一個咖啡店和鑰匙,引用類型是你只有咖啡店的鑰匙,你可以去內存的堆中找到對應的咖啡店地址,鑰匙環上有一個標簽上面寫了,這個鑰匙是對應的哪一家店,而這個標簽就是指針。
不知道什么是深拷貝和淺拷貝的請先去Google并在Chrome調試臺自己操作一下,這篇文章只會說明為何JS中會有這種問題。
我舉個栗子
出現這種結果的原因是第二步將a賦給b只是將a的地址給了b(請注意,數組是引用類型),此時改變b其實就是改變了堆中a和b共同指向的地址的值。通俗一點講:a和b兩個人都拿到了一個同一家咖啡店的鑰匙,這時候在咖啡店多放一個杯子,自然兩人共同的咖啡店都有這個杯子。所以有的時候我們為了避免淺拷貝,會用一些方式實現深拷貝。
關于ES6里的const,有些后臺人員甚至前端人員誤以為const賦值是常量,其實
const并不是變量的值不得改動,而是變量指向的那個內存地址所保存的數據不得改動。對于簡單類型的數據(數值、字符串、布爾值),值就保存在變量指向的那個內存地址,因此等同于常量。但對于復合類型的數據(主要是對象和數組),變量指向的內存地址,保存的只是一個指向實際數據的指針,const只能保證這個指針是固定的(即總是指向另一個固定的地址)
(此段引用自阮一峰)
const只是把鑰匙上的標簽(指針)固定,所以:
小白第一次寫技術文章,如果有錯誤還請多多指教,多謝!
參考資料[深入了解JS引用類型基本類型][5] [阮一峰ES6教程][6]
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/102692.html
摘要:理解的函數基礎要搞好深入淺出原型使用原型模型,雖然這經常被當作缺點提及,但是只要善于運用,其實基于原型的繼承模型比傳統的類繼承還要強大。中文指南基本操作指南二繼續熟悉的幾對方法,包括,,。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。 怎樣使用 this 因為本人屬于偽前端,因此文中只看懂了 8 成左右,希望能夠給大家帶來幫助....(據說是阿里的前端妹子寫的) this 的值到底...
摘要:一篇文章徹底說清的深拷貝淺拷貝這篇文章的受眾第一類業務需要急需知道如何深拷貝對象的開發者。這篇文章分享的目的更多還是希望用一篇文章整理清楚深淺拷貝的含義遞歸實現思路以及小伙伴們如果使用了這種黑科技一定要清楚這樣寫的優缺點。 一篇文章徹底說清JS的深拷貝and淺拷貝 這篇文章的受眾 第一類,業務需要,急需知道如何深拷貝JS對象的開發者。 第二類,希望扎實JS基礎,將來好去面試官前秀操作...
摘要:一篇文章徹底說清的深拷貝淺拷貝這篇文章的受眾第一類業務需要急需知道如何深拷貝對象的開發者。這篇文章分享的目的更多還是希望用一篇文章整理清楚深淺拷貝的含義遞歸實現思路以及小伙伴們如果使用了這種黑科技一定要清楚這樣寫的優缺點。 一篇文章徹底說清JS的深拷貝and淺拷貝 這篇文章的受眾 第一類,業務需要,急需知道如何深拷貝JS對象的開發者。 第二類,希望扎實JS基礎,將來好去面試官前秀操作...
摘要:一篇文章徹底說清的深拷貝淺拷貝這篇文章的受眾第一類業務需要急需知道如何深拷貝對象的開發者。這篇文章分享的目的更多還是希望用一篇文章整理清楚深淺拷貝的含義遞歸實現思路以及小伙伴們如果使用了這種黑科技一定要清楚這樣寫的優缺點。 一篇文章徹底說清JS的深拷貝and淺拷貝 這篇文章的受眾 第一類,業務需要,急需知道如何深拷貝JS對象的開發者。 第二類,希望扎實JS基礎,將來好去面試官前秀操作...
閱讀 1859·2021-09-22 15:29
閱讀 3351·2019-08-30 15:44
閱讀 3558·2019-08-30 15:43
閱讀 1763·2019-08-30 13:48
閱讀 1489·2019-08-29 13:56
閱讀 2474·2019-08-29 12:12
閱讀 965·2019-08-26 11:35
閱讀 1052·2019-08-26 10:25