javascript对象深拷贝

function deepCopy(obj){
    const copy = Object.create(Object.getPrototypeOf(obj));
    var keys = Object.getOwnPropertyNames(obj);

    keys.forEach(key => {
        const descriptor = Object.getOwnPropertyDescriptor(obj, key);
        if (Object.prototype.toString.call(descriptor.value) === "[object Object]") {
            descriptor.value = deepCopy(descriptor.value)
        }
        Object.defineProperty(copy, key, descriptor);
    })
    return copy
}

var obj = { a: {b: 666} };
var copyObj = deepCopy(obj);
console.log(copyObj); // { a: {b: 666} }

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理