我找不到一种方法来演示除了纯代码之外的其他方法(没有小提琴)但是这里正在发生的事情:我让一个AJAX转到一个JSON文件。我将数据保存到变量。完成后,我再创建另一个JSON文件,目的是组合两个数据集。
$.get('1.json', function (foo) {
var res1 = foo;
$.get('2.json', function (bar) {
var res2 = bar;
$.extend(res1, res2);
});
});
无论我做什么,res1都会输出res2的数据集。我尝试过使用
var baz = $.extend({}, res1, res2);
没有运气。
答案 0 :(得分:2)
默认情况下,.extend
只会执行浅层复制。例如:
columns = [
'MemTotal', 'MemFree', 'Cached', 'SwapTotal', 'SwapFree', 'AnonPages',
'Dirty', 'Writeback', 'WritebackTmp', 'PageTables', 'HugePages_Free',
'HugePages_Rsvd', 'HugePages_Surp', 'HugePages_Total'
]
stats = {}
with open('/proc/meminfo') as infile:
for line in infile:
line = line.split()
stats[line[0][:-1]] = line[1]
values = [stats[key] for key in columns]
print '\t'.join(values)
为了进行深层复制(并保留您的香蕉),您可以使用var obj1 = {
a : {
banana: true
}
}
var obj2 = {
a : {
monkey: true
}
}
var obj3 = $.extend({}, obj1, obj2);
/*
obj3 = {
a : {
monkey: true
}
}
*/
的第二个签名并传递.extend
作为第一个参数:
true