jquery1.11源码学习——揭秘jquery内幕

// 先说下 个人喜爱的叫法  
//在js里 大多数都是对象 除了一些基本类型和几个特例  对于function这个词 很多人叫他是一个函数 也有叫他一个方法 方法这个词 在java这种面相对象的语言中常见
//其实最重要的是它是一个对象 如下一个对象obj
var obj=function(){};obj.b=function(){};
//上面这个我会说一个函数obj 或一个对象obj 这个对象下面还有一个方法b 说b是个函数我也不反对 管他叫啥 知道有这个形式就行了 
//我打算在这里就不说函数了 就说对象 方法这类词  如果说函数了 记住重要的一点 它是个对象
 <div id="id"></div>
//使用jquery,我们拿到的就两种形式的对象,一种是$ 另一种是$("#id")
//有三种方法 一种是$这种对象下面的,如$.ajax()、一种是$("#id")这种对象下面的,如$("#id").find()、还有一种是同时在$和$("#id")下面的,如$.extend(),$("#id").extend().
//下面这种就是第三种情况的方法或是函数
jQuery.extend = jQuery.fn.extend=function(){}
//第一种对象容易知道 window.$={}时,就可以全局拿到$这个对象了。
//但是 我会不知道  拿到的$这个对象是什么 干什么用?下面看這個结构
(function() {
var jQuery = function() {
};
window.jQuery = window.$ = jQuery;
})(window)
//看到这个结构时  我就知道了 我平时用的$这个对象 其实就是一个方法或者是这个方法的返回结果 如果是返回结果 那会是什么呢? 继续了解jQuery 这个对象(也是个对象)
//$与jQuery是等值的 所以写$与jQuery是一样  还是写$方便些
var jQuery = function() {
return new jQuery.fn.init(selector, context);
};
//果真是個返回值 而這個值也是一个函数的实例 我又会想知道 jQuery.fn是什么东东?继续到源码里找
jQuery.fn = jQuery.prototype = {
// ...
//省略代表 里面有属性 和方法 反正里面就是有东西
};


//原来是一个函数的原型  正是jQuery这个函数的原型 构造函数也是jQuery  从这就可以知道平时我们写插件时总会写$.fn.XName=...
//那么 jQuery.fn.init 与jQuery.prototype.init相同
//我现在想知道 jQuery.fn.init这个函数到底是什么  或者我对她返回的是什么感到好奇
var init = jQuery.fn.init = function(selector, context) {
// ...
};
init.prototype = jQuery.fn;
//方法或属性有两种  一种是在函数下面的 还有一种是在这个函数的原型prototype下面的
//而我们常使用的$或jQuery对象就是原函数jQuery 而我们$("xx")得到的对象就是jQuery原型的实例


//总结是定义了jQuery这个函数对象 这个函数的调用会返回一个函数实例  暂且把这个函数去个名字叫M,但是这个函数还特别 她的原型竟然是jQuery这个函数的原型 或者说是继承  
//有个标示符也是个对象jQuery.fn 指向着jQuery这个函数的原型
//我们调用jQuery("selector") 其实得到的是M函数的实例 就是$("#id")这种对象 我们用的方法 也就是M下面的方法
//而我们用的$这个对象 就是jQuery这个对象本事 使用的方法都是以jQuery.xx形式定义的方法  不信 你看看源码是不是这样
//看下面个例子 jquery的简单版式
(function() {
var A = function() {
this.attribut='這個是属性';
return new A.B.init();
};
A.B=A.prototype = { 
fnA:function(){}
};
A.B.init=function();
A.B.init.prototype=A.B;
A.a=function(){
}
// 这里调用a方法 直接A.a()就行了
A.b=function(){};
A.B.fnB=function(){
}
// 调用fnA fnB 要实例A才能调用 如new A().fnA()
})()
//上面的A的方法a就相当于jQuery里的$.xx xx代表方法标识或属性标识
//A的原型里的方法 就像$.fn.xx xx代表方法标识或属性标识
//所以我们平时使用的jquery方法有两种 一种是$.fnName 另一种是$("#id").fnName


//也许描述过程有很多的重复  我总是想讲清楚 可能最终讲解的还不是很清楚  这是我写博客之路上第一篇很认真写的文章  后期 我会继续努力的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值