博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
结构-行为-样式-Javascript 深度克隆函数(转)
阅读量:6540 次
发布时间:2019-06-24

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

突然想到有一回面试的时候有一个问题一直挂在心头,于是乎在网上找了找,这个比较好:

 

//深度克隆        function deepClone(obj) {            var result, oClass = isClass(obj);            //确定result的类型            if (oClass === "Object") {                result = {};            }else if (oClass === "Array") {                result = [];            }else {                return obj;            }            for (key in obj) {                var copy = obj[key];                if (isClass(copy) == "Object") {                    result[key] = arguments.callee(copy); //递归调用                }                else if (isClass(copy) == "Array") {                    result[key] = arguments.callee(copy);                }                else {                    result[key] = obj[key];                }            }            return result;        }        //返回传递给他的任意对象的类        function isClass(o) {            if (o === null) return "Null";            if (o === undefined) return "Undefined";            //从第九位开始截取            return Object.prototype.toString.call(o).slice(8, -1);        }        var oPerson = {            oName: "rookiebob",            oAge: "18",             oAddress: {province: "beijing"},             ofavorite: ["swimming", {reading: "history book"}],             skill: function () {console.log("bob is coding");}        };        //深度克隆一个对象        var oNew = deepClone(oPerson);        console.log(oNew);

 

本代码转自:

 

转载于:https://www.cnblogs.com/ChickenTang/p/5849796.html

你可能感兴趣的文章
hibernate中视图的映射
查看>>
Ionic3 UI组件之 ImageViewer
查看>>
flask框架----flask基础
查看>>
Oracle之RMAN备份及还原
查看>>
蓝桥杯-学校的第一次练习题
查看>>
spring中注解说明
查看>>
hdu 4135 -Co-prime
查看>>
二叉树的建立与先序、中序、后序遍历
查看>>
QLabel显示图片,图片可以自适应label的大小
查看>>
阅读下面程序,请回答如下问题:
查看>>
Lucas+中国剩余定理 HDOJ 5446 Unknown Treasure
查看>>
BZOJ3994:[SDOI2015]约数个数和——题解
查看>>
LeetCode 157,158. Read N Characters Given Read4 I+II
查看>>
Canvas
查看>>
linux软件包管理
查看>>
[20180817]校内模拟赛
查看>>
项目心得1
查看>>
you do not have permission
查看>>
Linux系统安装jdk
查看>>
mac配置vim语法高亮
查看>>