JavaScript - 函数实现值拷贝

前端之家收集整理的这篇文章主要介绍了JavaScript - 函数实现值拷贝前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

实现一个函数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 (obj instanceof Array) {
                    o = [];
                    for (var i = 0; i < obj.length; i++) {
                        o.push(clone(obj[i]));
                    }
                } else {
                    o = deepClone(obj)
                }
            }
            break;
        default:
            o = obj;
            break;
    }
    return o;
}

// 使用 JSON.parse() 方法拷贝的对象会抛弃对象的constructor
function deepClone(initalObj) {
var obj = {};
try {
obj = JSON.parse(JSON.stringify(initalObj));
}
return obj;
}

JavaScript 关于对象与数组的深拷贝

猜你在找的JavaScript相关文章