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)
Ext中不支持深度复制.有Ext.apply,Ext.applyIf但它们都只在哈希映射的第一级工作,并将覆盖而不是合并任何嵌入的数组或哈希.
事实上,文档明确声明Ext.apply是为了处理配置对象,而不是它很重要,但它只是为了说明它并不意味着用作合并实用程序函数,尽管它基本上可以如果你只想合并第一级/深度.