淺談克隆 JavaScript
更新時(shí)間:2021年10月29日 10:53:15 投稿:hqx
這篇文章主要介紹了克隆 JavaScript,克隆又有淺克隆與深克隆,文章圍繞JavaScript淺克隆與深克隆的相關(guān)資料展開具體內(nèi)容,需要的朋友可以參考一下
1、淺克隆
淺克隆無法copy數(shù)組和對(duì)象
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ù)組還是對(duì)象,分別處理
- 遍歷對(duì)象
- 是原始值直接
copy - 不是原始值判斷是數(shù)組還是對(duì)象
- 是數(shù)組建空數(shù)組
- 是對(duì)象建空對(duì)象
- 建立了之后再遍歷一遍原始對(duì)象或數(shù)組里是啥
- 遞歸
var obj = {
name : 'lin',
age : '18',
sex : 'male',
card : [1,2,3,4],
wife : {
name : 'bcsds',
son : {
name : 'aaa'
},
age : '23'
}
}
var obj1 = {}
//原始值和對(duì)象數(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);
您可能感興趣的文章:
- JavaScript數(shù)組及非數(shù)組對(duì)象的深淺克隆詳解原理
- JavaScript淺層克隆與深度克隆示例詳解
- javascript淺層克隆、深度克隆對(duì)比及實(shí)例解析
- JS對(duì)象的深度克隆方法示例
- JS對(duì)象深度克隆實(shí)例分析
- JS擴(kuò)展類,克隆對(duì)象與混合類實(shí)例分析
- JS克隆,屬性,數(shù)組,對(duì)象,函數(shù)實(shí)例分析
- JavaScript 深層克隆對(duì)象詳解及實(shí)例
- javascript數(shù)組克隆簡(jiǎn)單實(shí)現(xiàn)方法
- js克隆對(duì)象、數(shù)組的常用方法介紹
相關(guān)文章
詳解微信小程序 通過控制CSS實(shí)現(xiàn)view隱藏與顯示
這篇文章主要介紹了微信小程序 通過控制CSS實(shí)現(xiàn)view隱藏與顯示的相關(guān)資料,需要的朋友可以參考下2017-05-05
TypeScript中Module使用區(qū)別及模塊路徑解析規(guī)則
這篇文章主要為大家介紹了TypeScript中Module使用區(qū)別及模塊路徑解析規(guī)則,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06
Css-In-Js實(shí)現(xiàn)classNames庫(kù)源碼解讀
這篇文章主要為大家介紹了Css-In-Js實(shí)現(xiàn)classNames庫(kù)源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
微信小程序 出現(xiàn)錯(cuò)誤:{"baseresponse":{"errcode":-80002,"errmsg":""}}解決
這篇文章主要介紹了微信小程序 出現(xiàn)錯(cuò)誤:{"baseresponse":{"errcode":-80002,"errmsg":""}}解決辦法的相關(guān)資料,需要的朋友可以參考下2017-02-02
本地存儲(chǔ)localStorage設(shè)置過期時(shí)間示例詳解
這篇文章主要為大家介紹了本地存儲(chǔ)localStorage設(shè)置過期時(shí)間示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01
在JavaScript實(shí)例對(duì)象中改寫原型方法詳情
這篇文章主要介紹了在JavaScript實(shí)例對(duì)象中改寫原型方法的一下相關(guān)資料,需要的效果版可以參考一下文章詳細(xì)內(nèi)容,希望對(duì)你有所幫助2021-10-10
Javascript閉包使用場(chǎng)景原理詳細(xì)
這篇文章主要介紹了Javascript閉包的使用場(chǎng)景, 由于在Javascript語言中,只有函數(shù)內(nèi)部的子函數(shù)才能讀取局部變量,閉包就是能夠讀取其他函數(shù)內(nèi)部變量的函數(shù)。所以,在本質(zhì)上,閉包就是將函數(shù)內(nèi)部和函數(shù)外部連接起來的一座橋梁,下面一起進(jìn)入文化在哪個(gè)了解文章內(nèi)容2021-11-11

