zoukankan      html  css  js  c++  java
  • $.extend用法详解(一)

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

    在这里target是Object,它有两个作用:

    1. 如果后面没有对应的object1及objectN等等,它的作用就是给jQuery命名空间本身对象进行扩展,可以为jQuery增加新的共用方法和属性。

    2.存在object1,及objectN等等,object1,objct2,...objectN会合并到target中,返回值为合并后的target,由此可以看出该方法合并后,是修改了target的结构的。

    如果不想修改原始对象的结构,可以创建target为空对象,将后面的对象属性合并到target中,然后返回给新的object中:

    同时,如果后面的参数如果和前面的参数存在相同的名称,那么后面的会覆盖前面的参数值。

    demo如下:

                      var obj1 = {
                  apple:0,
                  banana:{
                      weight:20,price:100
                  },
                  cherry:97
              }
              var obj2 = {
                  banana:{price:200},
                  durian:100
              }
              var obj = $.extend(obj1,obj2);
              console.log("obj1为",obj1);
              console.log("obj为",obj);

    输出:

    由此可知,obj1的被修改,和obj都指向同一个对象,并且,参数相同的话,后面对象会覆盖前面。

     var obj = $.extend({},obj1,obj2);
              console.log(obj);

    这个obj也指向了同一个对象。

    二,jQuery.extend( [deep ], target, object1 [, objectN ] )

    在这里第一个参数deep代表是否进行深度拷贝,有两个参数true和false。

    下面看官网的例子:

     var object1 = {
             apple: 0,
             banana: { weight: 52, price: 100 },
             cherry: 97
                          };
             var object2 = {
              banana: { price: 200 },
              durian: 100
           };
     
    // Merge object2 into object1, recursively
       var obj = $.extend( true, object1, object2 );
       console.log("object1:",object1);
       console.log("obj:",obj);
    

     输出:

    深拷贝,也就是说它会将object中的嵌套子对象也进行合并。

    如果参数为false的话,代码如下:

     var obj = $.extend(false, object1, object2 );
       console.log("object1:",object1);
       console.log("obj:",obj);

    输出如下:

    输出:

    由此可知,false的话object1对象还是原来的结构,没有合并;得到的结果obj则是object1和object2的浅复制。

    下面在看两个小例子:

    <script>
    		var result=$.extend( true, {}, 
         { name: "John", location: {city: "Boston",county:"USA"} }, 
         { last: "Resig", location: {state: "MA",county:"China"} } );
    		console.log(result);
    
    	</script>
    

      输出结果如下:

    <script>
            var result=$.extend( false, {}, 
         { name: "John", location: {city: "Boston",county:"USA"} }, 
         { last: "Resig", location: {state: "MA",county:"China"} } );
            console.log(result);
    
        </script>

    输出如下:

  • 相关阅读:
    CSS-DAY03
    Java语言支持的8种基本数据类型
    Linux目录结构
    面向对象的四个基本特征
    使用AVADA头部有搜索icon怎么去掉?
    在ubuntu 上使用apt-get安装 任意版本
    ubuntu 14.04 nginx 1.12.2 配置https遇见的坑
    java Process执行linux命令
    node.js 接收上传的文件
    node.js 进行http get 向服务端请求
  • 原文地址:https://www.cnblogs.com/xuzhudong/p/7136271.html
Copyright © 2011-2022 走看看