站易CMS - 让每个人都可以轻松建站!
您现在的位置:首页?>?yabo.net?>?Javascript/Ajax?>?jQuery.extend()

jQuery.extend()

来源:互联网 作者:杨斌 发布时间: 2013-06-05 17:14:02 361人浏览 条评论

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()yabo.net,这意味着目标参数被省略。在这种情况下,jQuery对象本身被默认为目标。这样,我们可以在jQuery的命名空间下添加新的功能。这可用于插件作者希望添加新的方法到jQuery。

请记住,目标对象(第一个参数)将被修改,也将通过$.extend()返回。然而,如果我们想保留原对象,我们可以通过传递一个空对象作为目标:

var?object?=?$.extend({},?object1,?object2);

通过$.extend()合并执行默认不是递归的;如果第一个对象的属性本身是一个对象或数组,这将是完全用第二个对象相同的key重写一个属性。这些值是不合并。这可以看到在下面的例子通过检查香蕉的值。然而,true为第一个函数参数,对象将被递归合并。

未定义的属性不会被复制。然而,从对象原型的继承属性被复制。

Examples:

Example:?Merge two objects, modifying the first.

var?object1?=?{
??apple:?0,
??banana:?{weight:?52,?price:?100},
??cherry:?97
};
var?object2?=?{
??banana:?{price:?200},
??durian:?100
};

$.extend(object1,?object2);

Result:

object1?===?{apple:?0,?banana:?{price:?200},?cherry:?97,?durian:?100}

Example:?Merge two objects recursively, modifying the first.

var?object1?=?{
??apple:?0,
??banana:?{weight:?52,?price:?100},
??cherry:?97
};
var?object2?=?{
??banana:?{price:?200},
??lime:?100
};

$.extend(true,?object1,?object2);

Result:

object1?===?{apple:?0,?banana:?{weight:?52,?price:?200},?cherry:?97,?lime:?100}

Example:?Merge settings and options, modifying settings.

var?settings?=?{?validate:?false,?limit:?5,?name:?"foo"?};
var?options?=?{?validate:?true,?name:?"bar"?};
jQuery.extend(settings,?options);

Result:

settings?==?{?validate:?true,?limit:?5,?name:?"bar"?}

Example:?Merge defaults and options, without modifying the defaults. This is a common plugin development pattern.

var?empty?=?{}
var?defaults?=?{?validate:?false,?limit:?5,?name:?"foo"?};
var?options?=?{?validate:?true,?name:?"bar"?};
var?settings?=?$.extend(empty,?defaults,?options);

Result:

settings?==?{?validate:?true,?limit:?5,?name:?"bar"?}
empty?==?{?validate:?true,?limit:?5,?name:?"bar"?}
0人觉得很赞
0人觉得很烂
正在加载评论,请稍等...
验证码:
?