摘要:區別深淺拷貝主要的區別的拷貝的層級不同,淺拷貝拷貝的是一層不包括里面的引用數據類型,深拷貝的是多層實現方式淺拷貝完成后的對象如果還拷貝原型對象就刪了這句深深拷貝需要判斷引用數據類型,貌似還要調用遞歸的方式。
區別:
深淺拷貝主要的區別的拷貝的層級不同,淺拷貝拷貝的是一層不包括里面的引用數據類型,深拷貝的是多層
實現方式:淺
function shallClone (obj) { var obj_kkw = {}; // 拷貝完成后的對象 for ( var i in obj) { if(obj.hasOwnProperty(i)) { // 如果還拷貝原型對象就刪了這句 obj_kkw[i] = obj[i] } } return obj_kkw; } 深:深拷貝需要判斷引用數據類型,貌似還要調用遞歸的方式。 function deep (ori,tar) { var tar = tar || {} var tostr = Object.prototype.toString; var arrstr = "[object Array]"; for ( let prop in ori) { if(ori.hasOwnProperty(prop)) { if(ori[prop] !== null && typeof(ori[prop]) == "object") { if(tostr.call(ori[prop]) == arrstr) { tar[prop] == []; } else { tar[prop] == {}; } deep (ort[prop], tar[prop]); } else { tar[prop] == ori[prop] } } } return tar; }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/106276.html
摘要:深拷貝相比于淺拷貝速度較慢并且花銷較大。所以在賦值完成后,在棧內存就有兩個指針指向堆內存同一個數據。結果如下擴展運算符只能對一層進行深拷貝如果拷貝的層數超過了一層的話,那么就會進行淺拷貝那么我們可以看到和展開原算符對于深淺拷貝的結果是一樣。 JS中數據類型 基本數據類型: undefined、null、Boolean、Number、String和Symbol(ES6) 引用數據類型:...
摘要:正文討論深淺拷貝,首先要從的基本數據類型說起根據中的變量類型傳遞方式,分為值類型和引用類型,值類型變量包括。當你拷貝的對象有多級的時候,就是深拷貝。數據不存在則對其拷貝。 前言: 本文主要閱讀對象:對深淺拷貝印象模糊對初級前端,想對js深淺拷貝聊一聊的中級前端。 如果是對這些有完整對認知體系和解決方法的大佬,可以選擇略過。 正文: 討論深淺拷貝,首先要從js的基本數據類型說起: 根據 J...
摘要:基本數據類型的復制很簡單,就是賦值操作,所以深淺拷貝也是針對,這類引用類型數據。它會拋棄對象的。另外,查資料過程中還看到這么一個詞結構化克隆算法還有這一篇資料也有參考,也寫得比較詳細了的深淺拷貝 基本數據類型的復制很簡單,就是賦值操作,所以深淺拷貝也是針對Object,Array這類引用類型數據。 淺拷貝對于字符串來說,是值的復制,而對于對象來說則是對對象地址的復制;而深拷貝的話,它不...
摘要:圖數據類型圖引用類型深淺拷貝問題不知道什么是深拷貝和淺拷貝的請先去并在調試臺自己操作一下,這篇文章只會說明為何中會有這種問題。所以有的時候我們為了避免淺拷貝,會用一些方式實現深拷貝。 首先要了解的js基礎 基本數據類型:Object、undefined、null、Boolean、Number、String、Symbol (ES6新加) Object包括: Array 、Date 、R...
閱讀 3667·2021-10-11 11:09
閱讀 1337·2021-09-24 10:35
閱讀 3422·2021-07-29 13:48
閱讀 460·2019-08-30 13:15
閱讀 2511·2019-08-30 12:53
閱讀 3183·2019-08-30 12:44
閱讀 2711·2019-08-29 16:57
閱讀 957·2019-08-29 12:26