jQuery学习笔记:extend
来源:互联网 发布:淘宝罗汉鱼 编辑:程序博客网 时间:2024/05/21 17:47
jQuery为开发插件提拱了两个方法,分别是:
- jQuery.fn.extend(object):给jQuery对象添加方法
- jQuery.extend(object):为扩展jQuery类本身.为类添加新的方法
那么fn究竟是什么呢?
jQuery.fn = jQuery.prototype
jQuery.fn指的就是jQuery的原型对象,也就是指jQuery的命名空间,因此在$.fn上定义的方法和属性,是所有jQuery对象共享的。
由此可以扩展jQuery方法,自己添加jQuery插件:
$.fn.resourceFilterMenu = function(){ ……}$("div").resourceFliterMenu();
因此jQuery.fn.extend就是对jQuery.prototype的扩展,添加原型方法,也就是为jQuery对象添加方法。
$.fn.extend({ xyz:function(){ alert("test"); }});
这样定义的是jQuery对象的方法:
$("#id").xyz();
而jQuery.extend则是为jQuery整体添加方法,可以理解为全局方法、静态方法.
$.extend({ xyz:function(){ alert("test"); }})
需要像下面这样使用:
$.xyz();
除了为jQuery添加静态方法之外,$.extend()方法还用于合并对象。
jQuery.extend( [deep ], target, object1 [, objectN ] )
- deep:Boolean,如果为true,则表示深拷贝,即递归式合并
- target:Object,一个对象,如果附加的对象被传递给这个方法将那么它将接收新的属性,如果它是唯一的参数将扩展jQuery的命名空间。
- object1:Object,一个对象,它包含额外的属性合并到第一个参数
- objectN:Object,包含额外的属性合并到第一个参数
当我们提供两个或多个对象给$.extend(),对象的所有属性都添加到目标对象(target参数)。
如果只有一个参数提供给$.extend(),这意味着目标参数被省略。在这种情况下,jQuery对象本身被默认为目标对象。这样,我们可以在jQuery的命名空间下添加新的功能。这对于插件开发者希望向 jQuery 中添加新函数时是很有用的。
请记住,目标对象(第一个参数)将被修改,并且将通过$.extend()返回。然而,如果我们想保留原对象,我们可以通过传递一个空对象作为目标对象:
var object = $.extend({}, object1, object2);
有关深拷贝:
在默认情况下,通过$.extend()合并操作不是递归的;如果第一个对象的属性本身是一个对象或数组,那么它将完全用第二个对象相同的key重写一个属性:
var object1 = { apple: 0, banana: { weight: 52, price: 100 }, cherry: 97};var object2 = { banana: { price: 200 }, durian: 100};// Merge object2 into object1$.extend( object1, object2 );
object1; //{"apple":0,"banana":{"price":200},"cherry":97,"durian":100}
此时并没有采用深拷贝,因此banana是会简单指向object2的属性的。
然而,如果将 true 作为该函数的第一个参数,那么会在对象上进行递归的合并。
警告:不支持第一个参数传递 false 。
$.extend(true,object1,object2);object1; //{"apple":0,"banana":{"weight":52,"price":200},"cherry":97,"durian":100}
- jQuery学习笔记:extend
- jquery学习笔记之extend()
- <学习笔记> jQuery.extend 函数详解
- jQuery源码研究分析学习笔记-jQuery.extend()、jQuery.fn.extend()(八)
- Jquery学习 Extend
- 学习jquery源代码---$.extend
- Jquery的extend方法$.extend()学习
- jQuery 源码学习(一)jQuery.extend()
- jQuery.extend $.extend详解
- jQuery.extend
- jquery extend
- jQuery.extend
- jQuery.extend
- jQuery.extend
- jquery extend
- jQuery.extend
- jQuery.extend
- jQuery.extend
- 在viewPager里使用高德地图
- Poj 3461 Oulipo(Kmp)
- 2016 TOP 10 ANDROID LIBRARY
- 用友nc65 uap开发参照节点数据拉单之二----直接通过调用查询模版查询上游单据
- 在python虚拟环境Virtualenv下载安装pywin32
- jQuery学习笔记:extend
- Shiro 整合SpringMVC 并且实现权限管理,登录和注销
- 小明有5本新书,要借给A、B、C三位小朋友,若每人每次只能借一本, 共有多少种借书的方案?
- linux C库函数与系统调用的区别
- 将github上项目迁移至code.net(扣钉)上,并删除github上的项目
- powermock源码浅析
- 线程池的深入了解及其实现机制的研究
- .Net常用集合简单比较
- javascript简单排序&查找