补充$.extend()
这里多谢某童鞋的提醒!说我的上篇随笔jquery插件开发的方式一还还可用于合并参数和深clone,虽然方式二中用了方式一做参数合并,但并未详细介绍,所以今天在此处做点补充!
一、合并参数
jquery的extend扩展原型:
extend(arg,arg1,arg2,……);
返回值未arg1,arg2……合并到arg。这里就有两种用法。
省略arg参数,则arg1,arg2……合并后返回。
var results=$.extend({name:'nick'},{sex:'handsome'});
//那么,返回值为
results={name:'nick',sex:'handsome'};
自定义arg参数,则返回自定义类型的arg。如:
//这里定义arg为一个对象
var results=$.extend({},{name:'nick'},{sex:'handsome'});
//那么,返回值为arg对象
results={name:'nick',sex:'handsome'};
//这里定义arg为一个数组
var results=$.extend([],{name:'nick'},{sex:'handsome'});
//那么,返回值为arg数组
results=[name:'nick',sex:'handsome'];
注意:
合并参数时,若$.extend()中参数的属性名冲突了,则后面的值会替换前面的值。
//这里定义arg为一个对象
var results=$.extend({},{name:'nick',sex:'male'},{sex:'handsome'});
//那么,返回值为arg对象。sex属性冲突,则后面的值handsome替换male
results={name:'nick',sex:'handsome'};
二、clone
jquery的extend的clone为:
$.extend(boolean,arg,arg1,arg2……);
boolean为true时,深clone:
var results=$.extend(true,{},{user:{name:'nick',love:'money'},age:25},{user:{name:'summer',like:'car'},sex:'handsome'});
//返回值
results={"user":{"name":"summer","love":"money","like":"car"},"age":25,"sex":"handsome"};
boolean为false时(默认):
var results=$.extend(false,{},{user:{name:'nick',love:'money'},age:25},{user:{name:'summer',like:'car'},sex:'handsome'});
//返回值
results={"user":{"name":"summer","like":"car"},"age":25,"sex":"handsome"};
亲们,注意到了麽?好好看看返回值!
注意:
- $.extend()用于clone时最好将boolean设为true。
- 由于jquery早期版本只有浅clone,不过后面的版本修复了,所以使用jquery cdn时尽量使用较高版本。
最后本想附上jquery相关源码,但不想浪费篇幅,建议大家在源码里搜索 jQuery.extend !
补充$.extend()的更多相关文章
- $.extend()的实现源码 --(源码学习1)
目标: $.extend({ add:function(a,b){ return a + b; } }) console.log($.a ...
- 图片放大功能插件及jquery.extend函数理解
前端时间,产品提出社区评论中的图片需要有放大功能.感觉可以共用,所以就想整合一个插件,过程中也借鉴了一些例子. 分析下自己的代码思路: var scaleImg = function(opts) { ...
- $.extend({},defaults, options) --(初体验三)
1.$.extend({},defaults, options) 这样做的目的是为了保护包默认参数.也就是defaults里面的参数. 做法是将一个新的空对象({})做为$.extend的第一个参数, ...
- jquery.fn.extend与jquery.extend--(初体验二)
1.jquery.extend(object); 为扩展jQuery类本身.为类添加新的方法. jquery.fn.extend(object);给jQuery对象添加方法. $.extend({ a ...
- vue.mixin与vue.extend
vue.mixin 全局注册一个混合,影响注册之后所有创建的每个 Vue 实例.谨慎使用全局混合对象,因为会影响到每个单独创建的 Vue 实例(包括第三方模板).大多数情况下,只应当应用于自定义选项, ...
- extend
这段时间在写一个预览图片的插件, 被我老大说了无数次了,不多说啥,说多了都是泪 昨天看着我的代码他说你用了extend,那你知道是什么意思吗 我只知道是扩展的意思,瞬间觉得自己弱爆了 真的 然后今天看 ...
- jQuery为开发插件提拱了两个方法:jQuery.fn.extend(); jQuery.extend();
jQuery为开发插件提拱了两个方法,分别是: jQuery.fn.extend(); jQuery.extend(); jQuery.fn jQuery.fn = jQuery.prototype ...
- jQuery中的$.extend方法来扩展JSON对象及合并,方便调用对象方法
$.extend方法可以扩展JSON对象,用一个或多个其他对象来扩展一个对象,返回被扩展的对象. 例一 合并 settings 和 options,修改并返回 settings var setting ...
- jQuery.extend 函数详解
JQuery的extend扩展方法: Jquery的扩展方法extend是我们在写插件的过程中常用的方法,该方法有一些重载原型,在此,我们一起去了解了解. 一.Jquery的扩展方 ...
- JavaScript中实现extend()方法
var male = { sex: "male" }; var xiaoming = { name: "xiaoming", school: "xin ...
随机推荐
- php学习笔记2016.1
基本类型 PHP是一种弱类型语言. PHP类型检查函数 is_bool() is_integer() is_double() is_string() is_objec ...
- MyEclipse 自带的TomCat 新增部署的时候不显示 Deploy Location
项目总是报错,添了删,删了又添了N次以后,发现添加部署的时候,Deploy Location 没有值了,Deploy Location 没有值在自带的Tomcat上就无法用浏览器浏览(Open in ...
- java servlet之过滤器1(解决jsp之间POST方式数据传递乱码)
首先,看看没有解决乱码的效果,新建两个jsp页面(a.jsp跳转到b.jsp). <form action="b.jsp" method="post"&g ...
- PC-BSD 9.2 发布,基于 FreeBSD 9.2
PC-BSD 9.2 发布了,该版本基于 FreeBSD 9.2. 下载地址:PCBSD9.2-RELEASE-p9-10-02-2013-x64-DVD.iso (3,465MB, SHA256). ...
- 用JQ仿造礼德财富网的图片查看器
现在就职于一家P2P平台,自然也会关注同行其它网站的前端技术,今天要仿造的是礼德内页的一个图片查看器效果.不过说白了,无论人人贷也好礼德财富也好,很多地方的前端都做的不尽如人意,比如忽略细节.缺乏交互 ...
- Java设计模式8:迭代器模式
迭代器模式 迭代器模式又叫做游标(Cursor)模式,其作用是提供一种方法访问一个容器元素中的各个对象,而又不暴露该对象的内部细节. 迭代器模式结构 迭代器模式由以下角色组成: 1.迭代器角色 负责定 ...
- CSS Font知识整理总结
1.什么是字体 字体是文字的外在形式,就是文字的风格,是文字的外衣.比如行书.楷书.草书,都是一种字体.同样一个字每个人写起来都会有差异,可以说每个人都有一套潜在的字体库.对于web页面来说,字体就是 ...
- 犀利的background-clip:text,实现K歌字幕效果
今天学到了一个新的CSS3属性,更准确的说是属性值,那就是background-clip:text.利用此属性值可以制作出很神奇的效果.可惜只有chrome支持,不过今天可以先来玩玩这个属性. 先来介 ...
- CSS样式重置
;;;;;;;;;; } input, select { vertical-align:middle; }
- [开源]微信在线信息模拟测试工具(基于Senparc.Weixin.MP开发)
目前为止似乎还没有看到过Web版的普通消息测试工具(除了官方针对高级接口的),现有的一些桌面版的几个测试工具也都是使用XML直接请求,非常不友好,我们来尝试做一个“面向对象”操作的测试工具. 测试工具 ...