jQuery源码学习
博客专区 > LM_Mike 的博客 > 博客详情
jQuery源码学习
LM_Mike 发表于9个月前
jQuery源码学习
  • 发表于 9个月前
  • 阅读 13
  • 收藏 0
  • 点赞 0
  • 评论 0

标题:腾讯云 新注册用户域名抢购1元起>>>   

1. 在慕课网学习jQuery源码时,看到下面这段代码

;(function(global, factory) {
    factory(global);
}(typeof window !== "undefined" ? window : this, function(window, noGlobal) {
    var jQuery = function( selector, context ) {
		return new jQuery.fn.init( selector, context );
	};
	jQuery.fn = jQuery.prototype = {};
	// 核心方法
	// 回调系统
	// 异步队列
	// 数据缓存
	// 队列操作
	// 选择器引
	// 属性操作
	// 节点遍历
	// 文档处理
	// 样式操作
	// 属性操作
	// 事件体系
	// AJAX交互
	// 动画引擎
	return jQuery;
}));

直接看这段代码有点难看,其实是一个自执行的闭包函数,下面拆开看

(function(global,factory){
    factory(global);
}(param1,param2));

后面那段代码就是负责返回param1和param2的值

(typeof window !== "undefined" ? window : this, function(window, noGlobal) {
    var jQuery = function( selector, context ) {
		return new jQuery.fn.init( selector, context );
	};
	return jQuery;
})

//举例返回(window,jQuery);

根据上面举例返回的,那么一种完整的情况代码如下,但是

;(function(global, factory) {
    factory(global);
}(window,jQuery);
//其中参数2 jQuery在其返回的函数里早已进行一系列操作

2. jQuery上层ajax函数,$.get和$.post

jQuery.each( [ "get", "post" ], function( i, method ) { 
    jQuery[ method ] = function( url, data, callback, type ) {  
 //这里jQuery[method]遍历后就是→$.get和$.post,对象参数名就是字符串
		// Shift arguments if data argument was omitted
		if ( jQuery.isFunction( data ) ) {  //这种情况是$.get的情况,不需要data,后面的参数都向前移以为
			type     = type || callback;
			callback = data;
			data     = undefined;
		}
		return jQuery.ajax({
			url: url,
			type: method,
			dataType: type,
			data: data,
			success: callback
		});
	};
});
共有 人打赏支持
粉丝 1
博文 218
码字总数 37930
×
LM_Mike
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: