淺談克隆 JavaScript
更新時間:2021年10月29日 10:53:15 投稿:hqx
這篇文章主要介紹了克隆 JavaScript,克隆又有淺克隆與深克隆,文章圍繞JavaScript淺克隆與深克隆的相關(guān)資料展開具體內(nèi)容,需要的朋友可以參考一下
1、淺克隆
淺克隆無法copy數(shù)組和對象
var obj = { name : "abs", age : '18', sex : 'male' } var obj1 = {} function clone(Origin,target) { target = target || {};//防止用戶不輸入target for(var k in Origin){ target[k] = Origin[k]; } } clone(obj,obj1);
2、深克隆
先判斷它是什么,原始值,數(shù)組還是對象,分別處理
- 遍歷對象
- 是原始值直接
copy
- 不是原始值判斷是數(shù)組還是對象
- 是數(shù)組建空數(shù)組
- 是對象建空對象
- 建立了之后再遍歷一遍原始對象或數(shù)組里是啥
- 遞歸
var obj = { name : 'lin', age : '18', sex : 'male', card : [1,2,3,4], wife : { name : 'bcsds', son : { name : 'aaa' }, age : '23' } } var obj1 = {} //原始值和對象數(shù)組typeof返回值有區(qū)別 function deepClone(origin,target) { target = target || {}; for(var k in origin) { if(origin.hasOwnProperty(k)){ if(typeof(origin[k]) == 'object') { if(Object.prototype.toString.call(origin[k]) == '[object Array]') { target[k] = []; }else { target[k] = {}; } deepClone(origin[k],target[k]); }else { target[k] = origin[k]; } } } } deepClone(obj,obj1);
相關(guān)文章
Typescript?封裝?Axios攔截器方法實(shí)例
這篇文章主要為大家介紹了Typescript?封裝?Axios攔截器方法實(shí)例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09JS實(shí)現(xiàn)可恢復(fù)的文件上傳示例詳解
這篇文章主要為大家介紹了JS實(shí)現(xiàn)可恢復(fù)的文件上傳示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-128個JS的reduce使用實(shí)例和reduce操作方式
reduce方法是JavaScript中一個比較強(qiáng)大的方法,可能在平時開發(fā)中,有人根本沒用過,通過下面的8個例子,學(xué)會reduce的用法以及它的常用場景,需要的朋友可以參考一下2021-09-09