浅谈克隆 JavaScript
程序员文章站
2022-03-09 08:34:12
目录1、浅克隆浅克隆无法copy数组和对象var obj = { name : "abs", age : '18', sex : 'male'}var obj1 = {}functi...
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);
上一篇: 点评Java full-stack框架
下一篇: MySQL练习 -表的增删改查