`

jquery,extjs中的extend用法小结

阅读更多

源自:http://jackyrong.iteye.com/blog/1692150

 

 

在jquery中,extend其实在做插件时还是用的比较多的,今天同时小结jquery和ext js中
的extend用法,先来看jquery中的。
1)  extend(dest,src1,src2,src3...); 

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

 

var start = {   
 id: 123,  
  count: 41,  
  desc: 'this is information',  
  title: 'Base Object',  
  tag: 'uncategorized',  
  values: [1,1,2,3,5,8,13]};
var more = {    name: 'Los Techies',    tag: 'javascript'};
var extra = {    count: 42,    title: null,    desc: undefined,    values: [1,3,6,10]};
var extended = $.extend(start, more, extra);
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的话,看下有什么不同: 
   

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

 

var start = {  
  id: 123, 
   count: 41,  
  desc: 'this is information',
    title: 'Base Object', 
   tag: 'uncategorized',  
  values: [1,1,2,3,5,8,13]};
var more = {    name: 'Los Techies',    tag: 'javascript'};
var extra = {    count: 42,    title: null,    desc: undefined, 
   values: [1,3,6,10]};
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用法小结

    标题所涵盖的知识点为:jquery 插件开发及 extjs 中的 extend 用法总结。在这个标题下,我们将详细解释在 jQuery 插件开发中 extend 方法的使用,以及 Ext JS 框架中 extend 方法的特点和区别。这个知识点对于前端...

    ExtJS的extend(Ext Designer的使用)

    ExtJS的`extend`特性是其核心的面向对象机制之一,它允许我们在JavaScript中创建类的继承链。在Ext Designer的环境下,这个概念尤为重要,因为设计师工具提供了可视化的界面来帮助开发者更直观地构建和扩展组件。这...

    js jquery extjs myeclipse 代码提示插件安装及安装步骤

    js jquery extjs myeclipse 代码提示插件安装及安装步骤js jquery extjs myeclipse 代码提示插件安装及安装步骤js jquery extjs myeclipse 代码提示插件安装及安装步骤js jquery extjs myeclipse 代码提示插件安装及...

    Ajax(Jquery与ExtJs)

    Ajax(Jquery与ExtJs) 框架对比 web前端开发

    Jquery-Extjs4.0框架

    本篇将详细探讨这两个框架在Jquery-Extjs4.0中的结合使用及其核心概念。 **jQuery框架** jQuery是一个轻量级、高性能的JavaScript库,它的主要目标是简化DOM操作、事件处理、动画制作以及Ajax交互。jQuery的核心...

    struts spring hibernate jquery extJs简单教程超值

    struts spring hibernate jquery extJs简单教程超值

    jQuery EasyUI仿Extjs界面

    在"jQuery EasyUI 仿 Extjs 界面布局"中,主要涉及以下知识点: 1. **布局管理**:EasyUI 提供了多种布局方式,如流式布局、网格布局、边界布局、表格布局等,这使得开发者可以方便地模拟出ExtJS中的复杂界面布局,...

    模仿extjs风格写的jquery combobox

    但我们可以根据标题推测,这个项目可能包含了使用jQuery实现的下拉列表组件,具有搜索过滤、动态加载数据等功能,旨在提供一种轻量级的解决方案,适用于那些希望在项目中集成类似ExtJS ComboBox但又不想引入庞大框架...

    ExtJS-3.4.0系列 — ExtJS下载使用

    - **docs**:存放EXT的文档,帮助开发者理解API和使用方法。 - **examples**:官方提供的演示示例,用于展示EXT的各种组件和功能的实际应用。 - **pkgs**:包含EXT的压缩代码,这些文件体积更小,加载速度更快,...

    jquery extjs example

    jQuery中的`$.ajax`函数简化了Ajax请求的编写,如: ```javascript $.ajax({ url: 'data.json', type: 'GET', dataType: 'json', success: function(data) { // 更新ExtJS组件的数据 var grid = Ext.getCmp('...

    extjs中文文档大全

    在使用过程中,要特别注意ExtJS的MVC(Model-View-Controller)架构,这是其设计的一大亮点。通过模型管理数据,视图展示数据,控制器协调两者,可以使代码结构清晰,易于维护。此外,利用Data Binding功能,可以...

    JavaScript框架jQuery和ExtJS的对比研究.pdf

    在对比研究中,我们将从多个方面对jQuery和ExtJS进行比较,包括 Лицензия、组件化、插件、功能、性能、可维护性、文档、中文资料等方面。 在License方面,jQuery和ExtJS都提供了开源和商业授权,满足不同...

    extjs使用说明 extjs的API jQuery使用说明 jQuery的API

    这篇详细的说明将分别介绍这两个库的核心概念、使用方法以及相关的API。 首先,让我们来看看ExtJS。ExtJS是一个完整的前端框架,提供了丰富的组件和布局系统,用于创建复杂的、响应式的Web应用程序。ExtJS 3.0版本...

    Extjs中使用extend(js继承) 的代码

    使用`Ext.extend`不仅能够让子类继承基类的所有属性和方法,还可以在子类中添加新的属性和方法,或者对继承来的父类方法进行覆盖。这样,子类就能够具有父类的功能,同时具备一些特定的扩展或修改。 需要注意的是,...

    jQuery和ExtJs代码提示spket插件的下载和使用说明

    **jQuery和ExtJS代码提示Spket插件的下载与使用指南** 在开发JavaScript应用程序时,尤其是在使用特定框架如jQuery和ExtJS时,拥有一个能够提供代码...通过熟悉其安装、配置和使用方法,你将在实际工作中受益匪浅。

    jQuery模仿ExtJS之TabPanel最新

    使用方法 页面引入jQuery.js、TabPanel.js、Fader.js、TabPanel.css new TabPanel({ renderTo:'tabs', width: '100%', height: '500px', active: 0, items: [{ title:'工作中心', ...

    2000多个extjs小图标适合jquery EasyUI

    在描述中提到,“2000多个extjs小图标,适合适合jquery EasyUI”,这表明这些图标设计与EXTJS和jQuery EasyUI的风格兼容,能够无缝集成到使用这两种技术的项目中。开发者可以利用这些图标来表示不同的功能、状态或...

    jquery/extjs智能提示所需文件spket.7z

    在IT行业中,jQuery和ExtJS是两种非常流行的JavaScript库,用于构建交互式和动态的Web应用程序。它们都提供了丰富的功能,如DOM操作、事件处理、AJAX交互以及UI组件等,极大地简化了前端开发工作。这里提到的"jquery...

    包含各种类型的extjs小图标,Extjs4小图标

    3. **使用方法**: - 在ExtJS应用中,可以使用`Icon`配置项在按钮、菜单项或其他组件上添加图标。例如,`{iconCls: 'add'}`将添加一个指定类名的图标,类名对应于CSS中的背景图像,通常存储在CSS文件中。 4. **...

Global site tag (gtag.js) - Google Analytics