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} }