jQuery深度扩展并保留所有属性

时间:2013-12-06 16:34:56

标签: javascript jquery

运行此位后:

var o1 = {
    a: { x: 1, y: 2 }
};
var o2 = {
    a: { z: 3 }
};
var result = $.extend(true, o1, o2);

我发现result{ a: { z: 3 } }。有没有办法让它包含o1.ao2.a的属性?

换句话说,有没有办法改变上面的脚本,以便result

{
    a: { x: 1, y: 2, z: 3 }
}

编辑:代码错了。在修复参数顺序后,它实际上按预期工作。

2 个答案:

答案 0 :(得分:5)

deep参数首先出现。 jQuery.extend( [deep ], target, object1 [, objectN ] )

var o1 = {
    a: { x: 1, y: 2 }
};
var o2 = {
    a: { z: 3 }
};
var result = $.extend(true, o1, o2);

http://api.jquery.com/jquery.extend/

答案 1 :(得分:2)

如果要使用深层复制,则应将true作为FIRST参数传递:

var result = $.extend(true, o1, o2);