在講深度轉殖之前,我們需要了解一些知識點:
判斷資料型別的方式:
1、typeof返回的資料型別:string number boolean undefined object function
2、object.prototype.tostring.call(obj)
拷貝資料:
基本資料型別:
拷貝後會生成乙份新的資料,修改拷貝以後的資料不會影響原資料
物件/陣列:
拷貝後不會生成新的資料,而且拷貝是引用。修改拷貝以後的資料會影響原來的資料
拷貝資料的方法:
1.直接賦值給乙個變數 //淺拷貝
2.object.assign() //淺拷貝
3.array.prototype.concat() //淺拷貝
4.array.prototype.slice() //淺拷貝
5.json.parse(json.stringify()) //深拷貝(深度轉殖),拷貝的資料裡不能有函式,處理不了
淺拷貝(物件/陣列)
特點:拷貝的引用,修改拷貝的資料會影響原資料,使得原資料不安全
深拷貝(深度轉殖)
特點:拷貝的時候生成新資料,修改拷貝以後的資料不會影響原資料
下面是我的深度轉殖的**
測試是否為深度轉殖:
執行結果:
從圖中可以看出修改了arr4物件裡面的屬性,arr3物件裡面的屬性並沒有改變,即實現了深度轉殖。
javascript es6 程式設計風格
字串 使用單引號 和反引號 避免使用雙引號 反引號用 插值 let a string foobar let b string foo bar console.log b 陣列解構 let arr array 1,2,3,4 let first,second arr console.log 1,fir...
帶你入門 JavaScript ES6 四
本文同步帶你入門前面我們學習了 本章我們將學習 es6 中的 類,了解類基本定義和繼承相關知識 es6 中的類是基於原型的繼承語法糖,本質上它是乙個function型別 1.1 原型宣告 function car engines car.prototype.startengines function...
String類之 深拷貝
上篇部落格我們說淺拷貝存在同一塊資源被多次釋放的問題,那麼這篇部落格就是給淺拷貝擦屁股,解決它遺留下來的問題。解決這個問題,我們可以考慮單獨給 s2 開闢一塊空間,只將 s1 裡的內容拷貝到 s2。看一看我們 是怎麼實現的吧 class string else 普通版版本 string const ...