jQuery源码学习(版本1.11)-构造函数
来源:互联网 发布:圣马可吉他怎么样知乎 编辑:程序博客网 时间:2024/05/17 22:34
概述
本文详细分析jquery-1.11.1.js源码文件行数:46~172;
代码简介:定义了一些常用的变量,定义了函数jQuery作为创建JQ对象的构造函数,并且重新定义了其原型对象;
下文进行详细代码分析。
jQuery构造函数
以下代码定义了一些常用的变量,以及构造函数jQuery。
// 定义一个数组deletedIds// 下面的slice,concat,push,indexOf全是JS原生数组的方法var deletedIds = [];var slice = deletedIds.slice;var concat = deletedIds.concat;var push = deletedIds.push;var indexOf = deletedIds.indexOf;// 定义一个JS Object对象class2type// toString,hasOwn对应Object对象的toString以及hasOwnProperty方法var class2type = {};var toString = class2type.toString;var hasOwn = class2type.hasOwnProperty;// 之后用于判断浏览器兼容的对象var support = {};var// 版本号version = "1.11.1",// 构造函数jQuery,用于创建JQ对象jQuery = function( selector, context ) {// JQ对象实际是调用jQuery.fn.init( selector, context )去创建的,jQuery方法是在init外包装了一层return new jQuery.fn.init( selector, context );},// trim()方法使用的正则rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,// jQuery.camelCase使用的正则// rmsPrefix是匹配css前缀,rdashAlpha匹配横杠之后的首字符rmsPrefix = /^-ms-/,rdashAlpha = /-([\da-z])/gi,// jQuery.camelCase的callback方法,转换匹配到的字符fcamelCase = function( all, letter ) {return letter.toUpperCase();};
jQuery构造函数原型
以下代码重新定义了构造函数的原型对象,初始化了一些JQ对象常用方法。
// 原型对象被命名空间jQuery的属性fn引用,这是一种编程思想jQuery.fn = jQuery.prototype = {// 版本号jquery: version,// 新定义的原型对象,constructor指向jQuery函数constructor: jQuery,// 每个JQ对象都会有的属性selector,在调用jQuery.fn.init创建JQ对象实例时,实例属性一般会覆盖掉这个原型里的属性selector: "",// JQ对象是类数组,默认length为0length: 0,// JQ对象实例是一个类数组对象,toArray使用数组的slice()方法将实例内部的数据转化成对象toArray: function() {return slice.call( this );},// 根据传入num数值获取dom节点get: function( num ) {return num != null ?// 如果num存在则根据其值获取对应dom节点,兼容正负值的情况( num < 0 ? this[ num + this.length ] : this[ num ] ) :// 不存在则调用slice创建新数组并返回slice.call( this );},// Take an array of elements and push it onto the stack// (returning the new matched element set)pushStack: function( elems ) {// 建新空JQ对象,与elems合并var ret = jQuery.merge( this.constructor(), elems );// 新对象定义属性prevObject指向thisret.prevObject = this;ret.context = this.context;// 返回新对象return ret;},// 实际调用的是jQuery.each(),见jQuery.each()分析each: function( callback, args ) {return jQuery.each( this, callback, args );},// 调用工具方法里的map(),并且利用pushStack()创建新的JQ对象返回map: function( callback ) {return this.pushStack( jQuery.map(this, function( elem, i ) {return callback.call( elem, i, elem );}));},// 调用原生数组的slice()方法,并且利用pushStack()创建新的JQ对象返回slice: function() {return this.pushStack( slice.apply( this, arguments ) );},// first跟last都是调用eq方法first: function() {return this.eq( 0 );},last: function() {return this.eq( -1 );},// 调用pushStack返回一个新JQ对象,以this[i]为内容eq: function( i ) {var len = this.length,j = +i + ( i < 0 ? len : 0 );return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );},// 返回prevObject,不存在则返回空JQ对象end: function() {return this.prevObject || this.constructor(null);},// js原生数组的方法加进JQ对象push: push,sort: deletedIds.sort,splice: deletedIds.splice};
0 0
- jQuery源码学习(版本1.11)-构造函数
- jQuery源码学习(版本1.11)-扩展工具函数
- jQuery源码学习(版本1.11)-事件处理-实例函数
- jQuery源码学习(版本1.11)-事件处理-工具函数jQuery.event
- jQuery源码学习(版本1.11)-Callbacks
- jQuery源码学习(版本1.11)-Deferred
- jQuery源码学习(版本1.11)-ready
- jQuery源码学习(版本1.11)-data
- jQuery源码学习(版本1.11)-queue
- jQuery源码学习(版本1.11)-创建jQuery对象
- 【代码片-1】 jQuery源码学习(版本1.11)-事件处理-实例函数
- jQuery源码分析(版本1.6.1)___构造jQuery对象-源码结构和核心函数
- jQuery源码分析(版本1.6.1)___构造jQuery对象-工具函数
- jQuery源码学习(版本1.11)-整体架构
- jQuery源码学习(版本1.11)-事件处理-整体架构
- jQuery源码学习笔记:构造jQuery对象
- jQuery源码学习(版本1.11)-事件处理-jQuery事件对象
- JQuery源码学习(2.1.1)之 版本结构 ---- day1
- UVA1599 Ideal Path
- 桶排序
- Foundation -- OC集合 --NSNumber
- Foundation -- OC集合 --NSDate
- 计数排序 --非比较排序
- jQuery源码学习(版本1.11)-构造函数
- Foundation -- OC集合 --NSValue
- Numerical Integration
- 求第k小元素
- LruCache详解之 Android 内存优化
- TextView取消自动换行并设置水平滚动
- 怎样学习一门编程语言
- JavaScript 变量提升 作用域
- 【少年の轨迹】cocos2d-x场景的切换