使用Ext JS进行jQuery深度复制?

Fat*_*cet 8 extjs object deep-copy extend

我已经尝试过并且惊讶于如何使用ExtJS.让我用代码块解释一下.

在jQuery中

console.clear();
var a = {
    b: 5,
    c: 4,
    o: {
        l: 2,
        p: 2
    }
}

var b = {
    k: 4,
    l: 3,
    c: 5,
    o: {
        m: 2,
        l: 1
    }
}

var ex = $.extend(true, a, b);
console.dir(ex)

这是输出

ex = {
    a: {
        q: 2
    },
    b: 5,
    c: 5,
    o: {
        l: 1,
        p: 2,
        m: 2
    }
}

Ext apply,applyIf,copyTo不能像这样工作.如何在ExtJS中生成输出?

提前致谢.

Eli*_*ght 10

对于最近的项目,我们调整了此示例代码以生成以下方法:

Ext.deepCopy = function(p, c) {
    c = c || (p.constructor === Array ? [] : {});
    for (var i in p) {
        if (typeof p[i] === 'object' && p[i] !== null) {
            c[i] = p[i].constructor === Array ? [] : {};
            Ext.deepCopy(p[i], c[i]);
        } else {
            c[i] = p[i];
        }
    }
    return c;
};
Run Code Online (Sandbox Code Playgroud)


Chr*_*isR 5

Ext中不支持深度复制.有Ext.apply,Ext.applyIf但它们都只在哈希映射的第一级工作,并将覆盖而不是合并任何嵌入的数组或哈希.

事实上,文档明确声明Ext.apply是为了处理配置对象,而不是它很重要,但它只是为了说明它并不意味着用作合并实用程序函数,尽管它基本上可以如果你只想合并第一级/深度.