js深克隆

2017-08-24  本文已影响0人  txwslyf
//返回传递给他的任意对象的类
    function isClass(o) {
        return Object.prototype.toString.call(o).slice(8, -1);
    }

    //深度克隆
    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) {
            if (obj.hasOwnProperty(key)) {
                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;
    }
上一篇下一篇

猜你喜欢

热点阅读