实现一个函数clone,可以对JavaScript中的5种主要的数据类型(包括Number、String、Object、Array、Boolean)进行值复制。

function clone(obj) {
    var o;
    switch (typeof obj) {
        case "undefined":
            break;
        case "string":
            o = obj + "";
            break;
        case "number":
            o = obj - 0;
            break;
        case "boolean":
            o = obj;
            break;
        case "object": // object 分为两种情况 对象(Object)或数组(Array)
            if (obj === null) {
                o = null;
            } else {
                if (Object.prototype.toString.call(obj).slice(8, -1) === "Array") {
                    o = [];
                    for (var i = 0; i < obj.length; i++) {
                        o.push(clone(obj[i]));
                    }
                } else {
                    o = {};
                    for (var k in obj) {
                        o[k] = clone(obj[k]);
                    }
                }
            }
            break;
        default:
            o = obj;
            break;
    }
    return o;
}

functionclone(obj) {var o;switch (typeof obj) {case"undefined":break;case"string": o = obj +"";break;case"number": o = obj -0;break;case"boolean": o = obj;break;case"object":// object 分为两种情况 对象(Object)或数组(Array)if (obj ===null) { o =null;}else{if (Object.prototype.toString.call(obj).slice(8,-1) ==="Array") { o = [];for (var i =0; i <obj.length; i++) {o.push(clone(obj[i]));}}else{ o ={};for (var k in obj) { o[k] =clone(obj[k]);}}}break;default: o = obj;break;}return o;}

原文地址:https://www.cnblogs.com/slb1994/p/6565290.html