您当前的位置:首页 > 网站建设 > javascript
| php | asp | css | H5 | javascript | Mysql | Dreamweaver | Delphi | 网站维护 | 帝国cms | React | 考试系统 | ajax | jQuery | 小程序 |

浅谈克隆 JavaScript

51自学网 2022-02-21 13:38:40
  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);

下载地址:
WebWorker 封装 JavaScript 沙箱详情
原型和原型链 prototype和proto的区别详情
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。