这是一个好的克隆功能吗?

发布于 2025-01-02 13:20:18 字数 367 浏览 0 评论 0原文

这是一个可以递归克隆对象的克隆函数吗?

function clone(o)
{
    function CloneObject(inObj) 
    {
        for (i in inObj) 
        {
            if(typeof inObj[i] == 'object')
                this[i] = clone(inObj[i]);
            else
                this[i] = inObj[i];
        }
    }

    return new CloneObject(o);
}

另外,我发现这不适用于数组。如何克隆数组?

Is this an okay clone function for cloning an object recursively?

function clone(o)
{
    function CloneObject(inObj) 
    {
        for (i in inObj) 
        {
            if(typeof inObj[i] == 'object')
                this[i] = clone(inObj[i]);
            else
                this[i] = inObj[i];
        }
    }

    return new CloneObject(o);
}

Also, i found out this doesn't work with arrays. How can I clone an array?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

情深如许 2025-01-09 13:20:18

它当然不会完美地克隆对象 - 克隆不会具有原始对象的原型,并且它们将具有不同的构造函数,并且如果原始对象具有任何不可迭代的属性,那么这不会复制它们 - 但你问如果它是“好的”,那么答案很可能是“是”:如果它所做的就是您需要它做的所有事情,那么它绝对没问题。

至于克隆数组 - 您可以检查是否 inObj.constructor == Array

It certainly doesn't clone the object perfectly — the clone won't have the original's prototype, and they'll have different constructors, and if the original has any non-iterable properties, then this won't copy them — but you ask if it's "okay", and the answer to that may well be "yes": If what it does is all that you need it to do, then it's absolutely fine.

As for cloning arrays — you could check if inObj.constructor == Array.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文