zoukankan      html  css  js  c++  java
  • 结构-行为-样式-Javascript 深度克隆函数(转)

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

    //深度克隆
            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);

    本代码转自:深度克隆函数

    Code is read far more than it's written
  • 相关阅读:
    TZOJ 4085 Drainage Ditches(最大流)
    [国家集训队2]Tree I
    [USACO17DEC]Push a Box
    专题总结(图论)
    专题总结(分块)
    [noi.ac_D1T2]sort
    [Poi2004]SZN
    [HEOI2016/TJOI2016]求和
    [CF528D]Fuzzy Search
    [bzoj5093]图的价值
  • 原文地址:https://www.cnblogs.com/ChickenTang/p/5849796.html
Copyright © 2011-2022 走看看