jQuery.extend()方法

定义和用法

jQuery.extend() 函数用于将一个或多个对象的内容合并到目标对象。

注意:1. 如果只为$.extend()指定了一个参数,则意味着参数target被省略。此时,target就是jQuery对象本身。通过这种方式,我们可以为全局对象jQuery添加新的函数。
2. 如果多个对象具有相同的属性,则后者会覆盖前者的属性值。

语法

$.extend( target [, object1 ] [, objectN ] )

指示是否深度合并


$.extend( [deep ], target, object1 [, objectN ] )

警告: 不支持第一个参数传递 false 。

参数描述
deep可选。 Boolean类型 指示是否深度合并对象,默认为false。如果该值为true,且多个对象的某个同名属性也都是对象,则该"属性对象"的属性也将进行合并。
targetObject类型 目标对象,其他对象的成员属性将被附加到该对象上。
object1可选。 Object类型 第一个被合并的对象。
objectN可选。 Object类型 第N个被合并的对象。


实例1

遍历数组元素,并修改第一个对象

< div id = " log " ></ div >
<
script >
$
( function ( ) {
 
var object1 = {
      apple
: 0 ,
      banana
: { weight : 52 , price : 100 } ,
     
cherry : 97
  
} ;
  
var object2 = {
      banana
: { price : 200 } , durian : 100 } ; /* object2 合并到 object1 中 */
     
    $.
extend ( object1 , object2 ) ;
  
var printObj = typeof JSON != " undefined " ? JSON . stringify : function ( obj ) {
        var
arr = [ ] ;
        $.
each ( obj , function ( key , val ) {
            
var next = key + " : " ;
             next
+= $. isPlainObject ( val ) ? printObj ( val ) : val ;
            
arr . push ( next ) ;
       
} ) ;
      
return " { " + arr . join ( " , " ) + " } " ; } ;
       $
( " #log " ) . append ( printObj ( object1 ) ) ;
  
} )
</
script >


运行结果:{"apple":0,"banana":{"price":200},"cherry":97,"durian":100}



实例2


递归方式合并两个对象
采用递归方式合并两个对象,并修改第一个对象。
源代码:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title> 递归方式合并两个对象</title>
<script src="http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js"></script>
</head>
<body>
 
<div id="log"></div>
<script>
$(function () {
    var object1 = {
        apple: 0,
        banana: { weight: 52, price: 100 },
        cherry: 97
    };
    var object2 = {
        banana: { price: 200 },
        durian: 100
    };
    // 将 object2 递归合并到 object1中
    $.extend( true, object1, object2 );
    // 假设 JSON.stringify - 在 IE版本< 8中无效
    $( "#log" ).append( JSON.stringify( object1 ) );
})
</script>
 
</body>
</html>

运行结果:{"apple":0,"banana":{"weight":52,"price":200},"cherry":97,"durian":100}


实例3


合并 defaults 和 options 对象
合并 defaults 和 options 对象,并且不修改 defaults 对象。这是常用的插件开发模式。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title> 合并 defaults 和 options 对象</title>
<script src="http://cdn.static.runoob.com/libs/jquery/1.10.2/jquery.min.js"></script>
</head>
<body>
 
<div id="log"></div>
<script>
$(function () {
    var defaults = { validate: false, limit: 5, name: "foo" };
    var options = { validate: true, name: "bar" };
    /*合并默认值和选项,不修改默认对象。*/
    var settings = $.extend({}, defaults, options);
    var printObj = typeof JSON != "undefined" ? JSON.stringify : function(obj) {
        var arr = [];
        $.each(obj, function(key, val) {
            var next = key + ": ";
            next += $.isPlainObject(val) ? printObj(val) : val;
            arr.push( next );
        });
        return "{ " +  arr.join(", ") + " }";
    };
    $("#log").append( "<div><b>defaults -- </b>" + printObj(defaults) + "</div>" );
    $("#log").append( "<div><b>options -- </b>" + printObj(options) + "</div>" );
    $("#log").append( "<div><b>settings -- </b>" + printObj(settings) + "</div>" );
})
</script>
 
</body>
</html>

运行结果:
defaults -- {"validate":false,"limit":5,"name":"foo"}
options -- {"validate":true,"name":"bar"}
settings -- {"validate":true,"limit":5,"name":"bar"}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值