在jquery中,extend其实在做插件时还是用的比较多的,今天同时小结jquery和ext js中 
的extend用法,先来看jquery中的。

1)  extend(dest,src1,src2,src3...);

  1. var start = {
  2. id: 123,
  3. count: 41,
  4. desc: 'this is information',
  5. title: 'Base Object',
  6. tag: 'uncategorized',
  7. values: [1,1,2,3,5,8,13]};
  8. var more = {    name: 'Los Techies',    tag: 'javascript'};
  9. var extra = {    count: 42,    title: null,    desc: undefined,    values: [1,3,6,10]};
  10. var extended = $.extend(start, more, extra);
  11. console.log(JSON.stringify(extended));

输出结果为: 
{    "id": 123,  
  "count": 42,   
"desc": "this is information",  
  "title": null, 
   "tag": "javascript",   
"values": [1, 3, 6, 10],   
"name": "Los Techies"}

可以看到,其实是

extend(dest,src1,src2,src3...);

,将src1,src2,src3...合并到dest中,返回值为合并后的dest,由此可以看出该方法合并后,是修改了dest的结构的。如果想要得到合并的结果却又不想修改dest的结构,可以如下使用:

var newSrc=$.extend({},src1,src2,src3...)//也就是将"{}"作为dest参数。 
比如: 
  var result=$.extend({},{name:"Tom",age:21},{name:"Jerry",sex:"Boy"})

那么合并后的结果

result={name:"Jerry",age:21,sex:"Boy"}

也就是说后面的参数如果和前面的参数存在相同的名称,那么后面的会覆盖前面的参数值。 
    同时要注意的是,在第一个例子中, "desc": undefined并不会出现在结果中, 
合拼的时候,依然保留了desc的原来的值。但title:null的话,会出现在extend的结果 
中。

2) 其他jquery extend的用法 
    1、$.extend(src) 
  该方法就是将src合并到jquery的全局对象中去,如:

$.extend({  hello:function(){alert('hello');}  });

  就是将hello方法合并到jquery的全局对象中。 
  2、$.fn.extend(src) 
  该方法将src合并到jquery的实例对象中去,如:

$.fn.extend({  hello:function(){alert('hello');} });

   就是将hello方法合并到jquery的实例对象中。

  下面例举几个常用的扩展实例:

$.extend({net:{}});

   这是在jquery全局对象中扩展一个net命名空间。

$.extend($.net,{   hello:function(){alert('hello');}  })

  这是将hello方法扩展到之前扩展的Jquery的net命名空间中去。

3 深度复制 
      // 以前的 .extend()   
   jQuery.extend(  false, 
     { name: “John”, location: { city: “Boston” } },   
     { last: “Resig”, location: { state: “MA” } }   
   );   
    // 结果:   
    // => { name: “John”, last: “Resig”, location: { state: “MA” } }

jQuery.extend( true,   
   { name: “John”, location: { city: “Boston” } },   
     { last: “Resig”, location: { state: “MA” } }   
  );   
  // 结果   
   // => { name: “John”, last: “Resig”,   
  //      location: { city: “Boston”, state: “MA” } }

3) 如果是ext js的话,看下有什么不同:

  1. var start = {
  2. id: 123,
  3. count: 41,
  4. desc: 'this is information',
  5. title: 'Base Object',
  6. tag: 'uncategorized',
  7. values: [1,1,2,3,5,8,13]};
  8. var more = {    name: 'Los Techies',    tag: 'javascript'};
  9. var extra = {    count: 42,    title: null,    desc: undefined,
  10. values: [1,3,6,10]};
  11. var extended = Ext.apply(start, more, extra);console.log(JSON.stringify(extended));

输出: 
   {    "id": 123,    "count": 42,    "title": null,    "tag": "javascript",    "values": [1,3,6,10],    "name": "Los Techies"}

可以看到,extjs中使用的是apply,而desc居然在合拼的结果中丢掉了,因为ext js认为undefind的东西不应该出现在合拼的结果中了,认为是擦除掉原来的值了,这个要注意

jquery,extjs中的extend用法小结的更多相关文章

  1. Delphi中ClientDataSet的用法小结

    Delphi中ClientDataSet的用法小结 TClientDataSet控件继承自TDataSet,其数据存储文件格式扩展名为 .cds,是基于文件型数据存储和操作的控件.该控件封装了对数据进 ...

  2. 详细解读-this-关键字在全局、函数、对象、jQuery等中的基础用法!

    一.前言 1. Javascript是一门基于对象的动态语言,也就是说,所有东西都是对象,一个很典型的例子就是函数也被视为普通的对象.Javascript可以通过一定的设计模式来实现面向对象的编程,其 ...

  3. JS与Jquery 中的extend用法不同

    1, Jquery //jQuery 应用扩展   jQuery.extend({                  // 定义setApDiv     setApDiv:function () {  ...

  4. jQuery学习笔记之extend方法小结

    在学习jQuery的时候,学习到了$.extend的主要用法,在此做一个简单的总结. (1)当只写一个对象自变量时,拓展的是jQuery的工具方法,如: $.extend({ aaa:function ...

  5. 实用ExtJS教程100例-006:ExtJS中Window的用法示例

    在前面几个示例中,我们演示了MessageBox的各种用法,今天这篇文章将演示如何使用Window. 我们首先来创建一个窗口: var win = Ext.create("Ext.windo ...

  6. C++中extern关键字用法小结

    总结C++中关于extern关键字的用法. 1.变量的生明和定义中 C++语言支持分离式编译机制,该机制允许将程序分割为若干个文件,每个文件可被独立编译.为了将程序分为许多文件,则需要在文件中共享代码 ...

  7. c#中enum的用法小结

    转自:http://blog.csdn.net/moxiaomomo/article/details/8056356 enums枚举是值类型,数据直接存储在栈中,而不是使用引用和真实数据的隔离方式来存 ...

  8. Mybatis配置映射文件中parameterType的用法小结

    原创: 在mybatis映射接口的配置中,有select,insert,update,delete等元素都提到了parameterType的用法,parameterType为输入参数,在配置的时候,配 ...

  9. 有关struts中DispatchAction的用法小结

       今天刚刚看了DispatchAction觉得这个东西有点意思,所以就写点东西,通过它的名字我想应该可以明白它的作用了,用于分发的Action,主要的好处是把一些功能类似的Action放到一个Ac ...

随机推荐

  1. C# 中对WinForm窗体中的控件快速设置TableIndex次序

    点击“视图”--“Tab键顺序”,然后便可设置.

  2. PreferenceActivity使用方法

              public class MainActivity extends Activity { @Override protected void onCreate(Bundle save ...

  3. Java之--Java语言基础组成—函数

    Java语言基础组成-函数 Java语言由8个模块构成,分别为:关键字.标识符(包名.类名.接口名.常量名.变量名等).注释.常量和变量.运算符.语句.函数.数组. 本片主要介绍Java中的函数,函数 ...

  4. list 容器 排序函数.xml

    pre{ line-height:1; color:#f0caa6; background-color:#2d161d; font-size:16px;}.sysFunc{color:#e54ae9; ...

  5. 【DWT笔记】基于小波变换的降噪技术

    [DWT笔记]基于小波变换的降噪技术 一.前言 在现实生活和工作中,噪声无处不在,在许多领域中,如天文.医学图像和计算机视觉方面收集到的数据常常是含有噪声的.噪声可能来自获取数据的过程,也可能来自环境 ...

  6. 捣蛋phpwind过滤器执行流程

    从上一篇我们就大概就知道过滤器的定义和怎样去配置,这一节来说说执行流程 public function run($handlerAdapter = null) { $handlerAdapter != ...

  7. 记录一下ORACLE 10gR2的软件下载地址,备用。

    转载自:http://www.eygle.com/archives/2008/06/10gr2_download_link.html 记录一下ORACLE 10gR2的软件下载地址,备用. 下载OTN ...

  8. <System.ServiceModel>

    實例: <system.serviceModel>    <diagnostics performanceCounters="All" />    < ...

  9. 第二百一十二天 how can I 坚持

    在家待了一天,过个周六日也就这样,时间.感觉好堕落. 下午心情特烦闷.好想结婚.为什么不认输,为什么会这样.这到底是一种什么心态. 哎.不懂自己. 睡觉. fordream.

  10. scp,ssh双机互信操作步骤

     Node1:# ssh-keygen -t rsa 这一步是生成密钥# ssh-copy-id -i ~/.ssh/id_rsa.pub root@node2.xueping365.com ~/.s ...