jQuery源码分析-extend(扩展)_第1页
jQuery源码分析-extend(扩展)_第2页
jQuery源码分析-extend(扩展)_第3页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、前言:jQuery的源码不同于prototype, mootools, 它们对Array, String, Event, Hash都进行了大量的扩展,然后才对element, form之类的dom元素提供了方便及兼容的操作。jQuery的源码也不同于YUI,采用组件的方式按照JAVA面向对象的中规中律地去构建类库,向用户提供方便的操作。jQuery仅仅是一个对象,类数组的对象。它没有对js的原始对象进行扩展。它没有分层分级去形成这样那样的继承方式(EXT中是这样)。它仅仅是所它认为自己所需要的操作都融合在jQuery对象中。简介:jQuery为开发插件提供了两个方法,分别是:jQuery.fn

2、.extend():给jQuery对象提供方法。jQuery.extend():为扩展jQuery类本身添加方法。具体的使用方法可以参考之前同事写的文档,在此不再重复。源码分析:jQuery.extend = jQuery.fn.extend = function() /target的初始值为第一个参数值与或操作的结果/deep变量表示是否实行深度拷贝var target = arguments0 | ,i = 1,length = arguments.length,deep = false,options, name, src, copy;/如果是(对象的)深度拷贝(第一个参数为true),

3、则进行深度拷贝if (typeof target = “boolean”) deep = target;/target指向第二个参数target = arguments1 | ;/跳过后面的for循环i = 2;/如果target初始值类型不对,置为if (typeof target != “object” && ! jQuery.isFunction(target) target = ;/如果只有一个参数被传入,则将参数表示的对象的属性和方法复制给jQuery或jQuery对象if (length = i) target = this;-I;for ( ; i < le

4、ngth; i +) /当参数都为非空时if (options = argumentsi) != null) /扩展基本的对象 for (name in options) src = targetname; copy = optionsname; /避免options中指定错误或者冲突引起的死循环 if (target = copy) continue; /递归处理,实现默认对象到自定义对象的深度拷贝 if (deep && copy && (jQuery.isPlainObject(copy) | jQuery.isArray(copy) var clone

5、= src && (jQuery.isPlainObject(src) | jQuery.isArray(src) ? src : jQuery.isArray(copy) ? : targetname = jQuery.extend(deep, clone, copy);/避免出现undefinded类型的数据进入插件内部 else if (copy != undefinded) targetname = copy;return target;小结:1. 从源码中可以看出jQuery.extend和jQuery.fn.extend是同一个方法,但是具体的作用却不一样。因为在调

6、用jQuery.extend 和jQuery.fn.extend 函数时,函数内部this是不同的,jQuery.extend()内this当然是jQuery,而jQuery.fn.extend当然是jQuery.fn,这样jQuery.extend()为扩展jQuery类本身.为类添加新的方法。jQuery.fn.extend()是给jQuery对象添加方法。2. extend(src):将src对象的属性和方法逐一复制给jQuery或jQuery对象3. extend(dest, src1, src2, src3.srcN):将src1, src2对象的属性和方法逐一复制给dest对象。需注意的是,在复制的过程中,排在后面的参数(对象)将会覆盖排在前面的参数和属性的方法。4. extend(boolean, dest, src1,src2):jQuery的extend方法提供了“深层拷贝”的功能,如果传入第一个参数为boolean型变量,则该变量为深层拷贝的标志,第二个参数为extend方法的目标对象,其余参数为需要进行继承的“父类”。如果第一个参数的值为true(深度拷

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论