开发中常用的 $.extend 总结

工作中常见$.extend( ),所以就查了一些它的用法。

一、Jquery的扩展方法原型是:

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

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

var newSrc = $.extend({}, src1, src2, src3...) //也就是将"{}"作为dest参数

  这样就可以将src1, src2, src3...进行合并,然后将结果返回给newSrc。如:

var result = $.extend({}, {name: "Tom", age: 21}, {name: "Jerry", sex: "Boy"})

  合并后的结果:

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

  也就是说,如果后面的参数和前面的参数相同会覆盖。

二、省略dest参数

  上述extend方法原型中的dest参数是可以省略的,如果省略了,则该方法就只能有一个src参数,而且是将src合并到调用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的实例对象中。

3.常用扩展实例

● 在jquery全局对象中扩展一个net命名空间:

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

● 将hello方法扩展到之前扩展的jquery的net命名空间中去。

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

三、jquery的extend方法还有一个重载原型

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

  第一个参数boolean代表是否进行深度拷贝,其余参数和前面介绍的一致,什么叫深拷贝,我们看一个例子:

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

  我们可以看出src1中嵌套子对象location: {city: "Boston"}, src2中也嵌套子对象location:{state: "MA"},第一个深度拷贝参数为true,那么合并后的结果就是:

result = {name: "John", last: "Resig",
    location: {city: "Boston", state: "MA", county: "China"}}

  也就是说它会将src中的嵌套子对象进行合并,而如果第一个参数boolean为false:

var result = $.extend(false, {},
    { name: "John", location: { city: "Boston", county: "USA"}},
    { last: "Resig", location: { state: "MA", county: "China"}})

  那么合并后的结果是:

result = { name: "John", last: "Resig", location: { state: "MA", county: "China"}}

  以上就是$.extend()在项目中经常会使用到的一些细节。

时间: 2024-10-06 04:36:13

开发中常用的 $.extend 总结的相关文章

在移动开发中常用的开源库总结

1.为什么需要开源库? 我个人觉得有以下几个原因: 1>我们的项目比较赶,但是又用到一些比较复杂的模块,这些模块不是系统自带的,或者说系统自带的满足不了需求,同时在一些开源网站上面又有类似的或者是满足我哦们需求的开源项目和库,拿来就可以减少我们很多的工作量. 2>开源库从另外一方面来说就是为了提高代码的重用性,大家使用了这个开源库,然后提交一些bug,通过大家的力量完善这个开源项目. 2.我常用的开源库? 我使用的一些开源项目主要都是在github上面很热门的项目: 图片加载:Android-

项目开发中常用的PHP函数

日期操作 为了便于存储.比较和传递,我们通常需要使用strtotime()函数将日期转换成UNIX时间戳,只有在显示给用户看的时候才使用date()函数将日期转换成常用的时间格式. strtotime()  函数将任何英文文本的日期时间描述解析为 Unix 时间戳 eg: <?php echo(strtotime("now")); echo(strtotime("3 October 2005")); echo(strtotime("+5 hours&

前端开发中常用的几种图片格式及其使用规范

在介绍图片格式之前,首先说一些额外的东西. 矢量图与位图. 矢量图是通过组成图形的一些基本元素,如点.线.面,边框,填充色等信息通过计算的方式来显示图形的.一般来说矢量图表示的是几何图形,文件相对较小,并且放大缩小不会失真. 这里有一点要注意的是web开发中用到的图片都不是矢量图,即使是一个三角形,只有一个边框,都是位图. 那么矢量图在哪里有用到呢? 我目前的知识池就知道一个图标字体,比如 font-awesome 目前在前端的开发中常用的图片格式有三种:jpg,png,gif.这些都是位图.

c++实现游戏开发中常用的对象池(含源码)

c++实现游戏开发中常用的对象池(含源码) little_stupid_child2017-01-06上传 对象池的五要素: 1.对象集合 2.未使用对象索引集合 3.已使用对象索引集合 4.当前使用量 5.最大使用量 http://download.csdn.net/download/little_stupid_child/9730912

开发中常用Fel的写法

直接看代码吧: package javademo; import java.util.HashMap;import java.util.Map; import com.greenpineyu.fel.Expression;import com.greenpineyu.fel.FelEngine;import com.greenpineyu.fel.FelEngineImpl;import com.greenpineyu.fel.context.FelContext;import com.gree

iOS开发中常用第三方库的使用和配置-GDataXML

这篇文章旨在给自己以后需要时能及时的查到,省得每次都去baidu. 1. xml解析库-GDataXML 参考文章:http://blog.csdn.net/tangren03/article/details/7868246 GDataXML下载地址: (1)GDataXML.h/m文件 http://code.google.com/p/gdata-objectivec-client/source/browse/trunk/Source/XMLSupport/ (2)DGataDefines.h

IOS开发中常用的宏定义

有些时候,我们需要将代码简洁化,这样便于读代码.我们可以将一些不变的东东抽取出来,将变化的东西作为参数.定义为宏,这样在写的时候就简单多了. 下面例举了一些常用的宏定义和大家分享: 1. 判断设备的操作系统是不是ios7 #define IOS7 ( [[[UIDevice currentDevice].systemVersion doubleValue] >= 7.0] ) 2. 判断当前设备是不是iPhone5 #define kScreenIphone5 (([[UIScreen main

WebApp 开发中常用的代码片段

其实这里面的多数都是 iOS 上面的代码.其他平台的就没有去验证了. HTML, 从HTML文档的开始到结束排列: <meta name=”viewport” content=”width=device-width, initial-scale=1.0″/> 让内容的宽度自适应为设备的宽度, 在做Mobile Web时必须加的一条 <meta name=”format-detection” content=”telephone=no”]]> 禁用手机号码链接(for iPhone)

iOS开发中常用的参数传递方法

在iOS开发中常用的参数传递有以下几种方法: 采用代理模式 采用iOS消息机制 通过NSDefault存储(或者文件.数据库存储等) 通过AppDelegate定义全局变量(或者使用UIApplication.定义一个单例类等) 通过控制器属性传递 使用代理方式传递参数的步骤如下: 1.定义协议,协议中定义好传参时所需要的方法 2.目标视图控制器定义一个代理对象 3.源视图控制器实现协议并在初始化目标控制器时指定目标控制器的代理为其自身 4.需要传参的时候在目标窗口调用代理的协议方法