克隆

浅克隆

浅克隆无法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);

深克隆

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

  1. 遍历对象
  2. 是原始值直接copy
  3. 不是原始值判断是数组还是对象
  4. 是数组建空数组
  5. 是对象建空对象
  6. 建立了之后再遍历一遍原始对象或数组里是啥
  7. 递归
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);

最新文章

  1. 1066: [SCOI2007]蜥蜴
  2. 机器学习——Logistic回归
  3. Spark的WorkCount的例子
  4. VisualStudio自动编码插件(Autocode——devprojects.net)
  5. cookie工具类,解决servlet3.0以前不能添加httpOnly属性的问题
  6. The Unsolvable Problem
  7. HTML元素事件说明
  8. 开启ACM的征途
  9. 取得ascii的例子
  10. 【No.4 Ionic】修改 cordova 插件
  11. tools/version.c
  12. 关于WinCE流接口驱动支持10以上的端口号(COM10)
  13. 转:android 录制视频的Demo
  14. Ubuntu开机自动挂载Windows分区
  15. Windows下MongoDB常用命令
  16. eclipse配置虚拟路径后,每次启动tomcat都会虚拟路径失效的问题解决
  17. python3内置函数练习
  18. vue里的样式添加之类名改动 和style改动
  19. Codeforces Round #284 (Div. 1) C. Array and Operations 二分图匹配
  20. Swift语言精要 - Dictionary(字典)

热门文章

  1. docker 容器重启策略
  2. 小程序使用 Promise.all 完成文件异步上传
  3. kubernetes的组件和概念介绍
  4. 模拟退火算法Python编程(3)整数规划问题
  5. 033- while循环语句
  6. 命令行运行py文件报错
  7. [源码分析] 并行分布式任务队列 Celery 之 Timer & Heartbeat
  8. Windows下Nexus 5的Android 5.0以上版本官方ROM的刷机教程
  9. UVA11991第k次出现的v的下标
  10. C# 搞桌面UI适配国产麒麟Linux+龙芯遇到的一些坑