首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > Web前端 >

jQuery源码学习札记一

2012-10-31 
jQuery源码学习笔记一不知该起什么题目,随便吧。不过我没心情逐一介绍其API,那是文档的事。比起那些随时会被

jQuery源码学习笔记一

不知该起什么题目,随便吧。不过我没心情逐一介绍其API,那是文档的事。比起那些随时会被废弃的方法,我更着重其内在的技术,所以我选择读源码。由于我 从不用jQuery,可能理解有些偏差。不过,看了这么多类库,有许多东西都是共通。比如这个jQuery对象就是DOM对象的加工工场,把DOM对象包 裹其中,外围是许多便捷的方法。我们可以想象一下太阳系,DOM就是太阳,css就其中一个行星,attr是另一个……之所以选择类数组形式,是为了用 map,filter等发端于数组的同名方法进行大数量的DOM操作。好了,下面就直接写在注解中吧。

?

javascript1.6的forEach迭代器? ? //这里是原型方法调用静态方法? ? each: function( callback, args ) {? ? ? ? return jQuery.each( this, callback, args );? ? },?? ? //返回(DOM对象)elem在jQuery对象的位置(仅指数字键)? ? //inArray的参数可以是jQuery对象,也可以是DOM对象? ? //有点类似数组的indexOf? ? index: function( elem ) {? ? ? ? // Locate the position of the desired element? ? ? ? return jQuery.inArray(? ? ? ? ? ? // If it receives a jQuery object, the first element is used? ? ? ? ? ? elem && elem.jquery ? elem[0] : elem? ? ? ? , this );? ? },//这是个异常复杂的方法//根据参数判断是读方法还是写方法attr: function( name, value, type ) {? ? var options = name;? ? // Look for the case where we're accessing a style value? ? if ( typeof name === "string" )? ? ? ? if ( value === undefined )? ? ? ? ? //读方法,获取相应属性? ? ? ? ? ? return this[0] && jQuery[ type || "attr" ]( this[0], name );? ? ? ? else {? ? ? ? ? //写方法,设置相应属性? ? ? ? ? //一个代理对象? ? ? ? ? ? options = {};? ? ? ? ? ? options[ name ] = value;? ? ? ? }? ? // Check to see if we're setting style values? ? //真正是用其静态方法工作,静态方法的优先级是相当高的,排列如下:? ? //foo.abc() 高于 this.abc()? ? //构造函数内的 this.abc() 高于 原型方法foo.prototype.abc? ? //极晚绑定 fooInstance.abc()是优先级最低? ? return this.each(function(i){? ? ? ? // Set all the styles? ? ? ? for ( name in options )? ? ? ? ? ? jQuery.attr(? ? ? ? ? ? ? ? type ?? ? ? ? ? ? ? ? ? ? this.style :? ? ? ? ? ? ? ? ? ? this,? ? ? ? ? ? ? ? name, jQuery.prop( this, options[ name ], type, i, name )? ? ? ? ? ? );? ? });},

热点排行