博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JS —— 深度克隆
阅读量:5214 次
发布时间:2019-06-14

本文共 1537 字,大约阅读时间需要 5 分钟。

     // 深度克隆        // 将obj的属性克隆到obj1上面。        // 在obj1上面添加属性不影响obj上面的属性        var obj = {            name: "abc",            age: 9,            sex: "female",            card: ['visa', 'master'],            wife: {                name: "bcd",                son: {                    name: "bcd",                    son: "xx"                }            }        }        var obj1 = {}        function deepClone(origin, target) { // 传入参数            var target = target || {}, // 防止没有写接收克隆的目标,所以兼容一下,如果没有就用空对象去接收                toStr = Object.prototype.toString, // 把原型上的toString付给toStr                arrStr = "[object Array]"; //toString为数组的判断结果            for (var prop in origin) { //循环起源对象                if (origin.hasOwnProperty(prop)) { //不拿原型上的东西,如果有原型上的属性就不进入判断                    if (origin[prop] !== "null" && typeof (origin[prop]) == 'object') { //不拿起源对象上面为空的值,拿原始值                        if (toStr.call(origin[prop]) == arrStr) { //为数组否则为对象                            target[prop] = []; //创建空数组接收                        } else {                                  //为对象                            target[prop] = {}; //创建空对象接收                        }                        deepClone(origin[prop], target[prop]); //执行递归,进入第二层重复判断这整个流程                    } else {                        target[prop] = origin[prop]; //如果是应用值直接付给目标                    }                }            }            return target; //防止没写接收的目标,返回克隆完成后的目标        }        deepClone(obj, obj1);

 

转载于:https://www.cnblogs.com/yangpeixian/p/11519318.html

你可能感兴趣的文章
11.28.cookie
查看>>
单片机编程
查看>>
bzoj2961&&bzoj4140 共点圆
查看>>
DDRmenu(翻译)
查看>>
python xml解析和生成
查看>>
gulp下单页面应用打包
查看>>
python应用:爬虫实例(静态网页)
查看>>
012 webpack中的router
查看>>
用Monitor简单3步监控中间件ActiveMQ
查看>>
迅为iTOP-4418开发板兼容八核6818开发板介绍
查看>>
com.fasterxml.jackson.databind.JsonMappingException
查看>>
【UVa 540】Team Queue
查看>>
Advanced Architecture for ASP.NET Core Web API
查看>>
排序算法(二)
查看>>
4.4 多线程进阶篇<下>(NSOperation)
查看>>
如何更改Android的默认虚拟机地址(Android virtual driver路径设置)
查看>>
Python内置函数(36)——iter
查看>>
HTML标签_1
查看>>
jsp组成元素
查看>>
排序算法(转)
查看>>