2022
我们一起努力

讲解一下克隆 JavaScript

这篇文章主要介绍了克隆 JavaScript,克隆又有浅克隆与深克隆,文章围绕JavaScript浅克隆与深克隆的相关资料展开具体内容,需要的朋友可以参考一下

讲解一下克隆 JavaScript

1、浅克隆

浅克隆无法copy数组和对象

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、深克隆

先判断它是什么,原始值,数组还是对象,分别处理

遍历对象

是原始值直接copy

不是原始值判断是数组还是对象

是数组建空数组

是对象建空对象

建立了之后再遍历一遍原始对象或数组里是啥

递归

var obj = {
   name : 'lin',
   age : '18',
   sex : 'male',
   card : [1,2,3,4],
   wife : {
       name : 'bcsds',
       son : {
           name : 'aaa'
       },
       age : '23'
   }
}
var obj1 = {}
//原始值和对象数组typeof返回值有区别
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);

本文来源:www.lxlinux.net/9601.html,若引用不当,请联系修改。

赞(0)
文章名称:《讲解一下克隆 JavaScript》
文章链接:https://www.fzvps.com/180948.html
本站文章来源于互联网,如有侵权,请联系管理删除,本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
图片版权归属各自创作者所有,图片水印出于防止被无耻之徒盗取劳动成果的目的。

评论 抢沙发

评论前必须登录!