jquery1.0版本代码解读 each extend

13行 --window.undefined = window.undefined;–为了兼容ie5前的老版浏览区,老版本没有window.undefinde没有设定找的话window.undefinde就是undefinded值,再把这个undefinded值复制给window的子对象unfdeinfded,然后window={undefinded:undefinded}核心函数each ,extend,每次给原型jQuery.fn添加(extend)属性的都会用到extend函数jQuery.
摘要由CSDN通过智能技术生成

13行 --window.undefined = window.undefined;–为了兼容ie5前的老版浏览区,老版本没有window.undefinde
没有设定找的话window.undefinde就是undefinded值,再把这个undefinded值复制给window的子对象unfdeinfded,然后window={undefinded:undefinded}

核心函数each ,extend,每次给原型jQuery.fn添加(extend)属性的都会用到
extend函数

jQuery.extend = jQuery.fn.extend = function(obj,prop) {
	if ( !prop ) { prop = obj; obj = this; }
	for ( var i in prop ) obj[i] = prop[i];
	return obj;
};

参数obj,prop obj就是传入的对象,第二个参数暂时没用到,后面使用都是传入一个对象,应该是供它内部使用,这段代码的意思是 如果第二个参数为空,prop(英文支撑物,支撑)这里应该是添加的意思
prop = obj obj传入的对象参数变成prop要添加的对象,
obj=this this是指向调佣这个函数的对象 后面都是obj指向jQuery和jQuery.fn
for那段 用i遍历要添加对象的属性 i变成了传入参数的的属性值
obj[i] = prop[i] 把传入对象的属性添加到jQuery和jQuery.fn(原型)上然后把传入对象的值赋值给jQuery和原型上
给了个返回值 后面执行都是返回jQuery或者原型
总的来说就是遍历传入参数对象的属性,把传入对象的属性添加的jQuery和原型上并且 属性的值就是传入对象的值

这是原型上each

each: function( fn, args ) {
		return jQuery.each( this, fn, args );
	},

这个调用方法$('div).each(function)
这里的this就是div 对应的就是下面的obj,返回值就是div

each函数–这个是jQuery里的each

each: function( obj, fn, args ) {
		if ( obj.length == undefined )
			for ( var i in obj )
				fn.apply( obj[i], args || [i, obj[i]] );
		else
			for ( var i = 0; i < obj.length; i++ )
				fn.apply( obj[i], args || [i, obj[i]] );
		return obj;
	}

each这个函数if里的是如果传入的对象没有length这个属性和有length属性 两种情况进行操作
这里面obj-对象 fn–执行的函数,args—传入的第三个参数,我看着后面基本没用这个
没有length属性时 用i遍历obj对象,i变成了obj对象的属性名,
然后fn.apply 把传入的执行函数给这个obj[i](–属性值这里叫子对象好点–)
[i,obj[i]] 然后把i属性名和obj[i]属性值给fn执行函数作为第一个参数和第二个参数
这上面的对象针对 {width:20,height:30,user:“李四”}
然后函数fn(a,b,c)里的a就变成了width,b变成了20,只有c才算是它fn自己创建的的参数,前面两个已经记录了值

如果有length—针对 {0:width,1:height,length:2}
也是把obj对象的属性名 和属性值给fn作为第一个或第二个参数,并且执行fn
给了个返回值obj 对象本身

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值