jQuery.extend( target, [ object1 ], [ objectN ] ) 返回: Object
描述: 合并两个或更多的对象的内容汇集成到第一个对象。
version added: 1.0jQuery.extend( target, [ object1 ], [ objectN ] )
target 一个对象,如果附加的对象被传递给这个方法将那么它将接收新的属性,如果它是唯一的参数将扩展jQuery的命名空间。
object1 一个对象,它包含额外的属性合并到第一个参数
objectN 包含额外的属性合并到第一个参数
version added: 1.1.4jQuery.extend( [ deep ], target, object1, [ objectN ] )
deep 如果是true,合并成为递归(又叫做深拷贝)。
target 对象扩展。这将接收新的属性。
object1 一个对象,它包含额外的属性合并到第一个参数
objectN 包含额外的属性合并到第一个参数
当我们提供两个或多个对象给 $.extend(),对象的所有属性都添加到目标对象。
如果只有一个参数提供给 $.extend(),这意味着目标参数被省略。在这种情况下,jQuery对象本身被默认为目标。这样,我们可以在jQuery的命名空间下添加新的功能。这可用于插件作者希望添加新的方法到jQuery。
请记住,目标对象(第一个参数)将被修改,也将通过 $.extend() 返回。然而,如果我们想保留原对象,我们可以通过传递一个空对象作为目标:
1 | var object = $.extend({}, object1, object2); |
通过 $.extend() 合并执行默认不是递归的;如果第一个对象的属性本身是一个对象或数组,这将是完全用第二个对象相同的key重写一个属性。这些值是不合并。这可以看到在下面的例子通过检查香蕉的值。然而,true 为第一个函数参数,对象将被递归合并。
未定义的属性不会被复制。然而,从对象原型的继承属性将被复制。
Examples:
Example: Merge two objects, modifying the first.
1 | var object1 = { |
Result:
1 | object1 === {apple: 0, banana: {price: 200}, cherry: 97, durian: 100} |
Example: Merge two objects recursively, modifying the first.
1 | var object1 = { |
Result:
1 | object1 === {apple: 0, banana: {weight: 52, price: 200}, cherry: 97, lime: 100} |
Example: Merge settings and options, modifying settings.
1 | var settings = { validate: false, limit: 5, name: "foo" }; |
Result:
1 | settings == { validate: true, limit: 5, name: "bar" } |
Example: Merge defaults and options, without modifying the defaults. This is a common plugin development pattern.
1 | var empty = {} |
Result:
1 | settings == { validate: true, limit: 5, name: "bar" } |

