jquery 源码初探,一步步实现自己的jquery(一)

16 篇文章 0 订阅
15 篇文章 0 订阅
最近稍微看了一下jquery的源码(1.4.2),大致上看,源码都包含在下面的代码中
  (function(){})()

第一个括号是个匿名函数,第二个表示马上执行第一个括号里面的代码,因为js里面没有命名空间,对于框架性的东西,函数,对象等于其他不重复是很关键的,在匿名函数里,确保了所定义的函数,对象的有效范围,起到了命名空间的作用。既然作用范围在这个匿名函数里,那么怎样让别人使用了,看下面

var jQuery = function( selector, context ) {
return new jQuery.fn.init( selector, context );
},
_jQuery = window.jQuery,
_$ = window.$,

先是创建了jQuery这个对象,里面返回的是自己的一个实例(下面会详细讲),然后分别给_jQuery和_$赋值,当然了,后面会有扩展,把值赋回来,如

window.$ = _$;
window.jQuery = _jQuery;

在前面版本中记得是直接赋值的 如:(估计是为了扩展需要吧)

var jQuery = window.jQuery = function(selector, context) {
//……
};

反正呢,原理就是让jQuery成为window对象的一个属性,这样就可以在其他地方像使用document一样使用jQuery对象了(document也是window对象的一个属性),并且呢,在源码底部还有一行代码:
 
window.jQuery = window.$ = jQuery;

:wink: 这样的话我们就用$来代替jQuery(还是美元值钱啊)


一般情况下,js创建类也需要定义属性和方法(可以不定义),创建模式如下:


// 定义一个构造函数;
testClass(param1, param2) {
this.attr1 = param1;
this.attr2 = param2;
...
}

// 在prototype对象上扩展,加上相应的方法;
testClass.prototype = {
Method1: function() {...},
Method2: function() {...},
...
}

// 定义一个实例;
var test = new testClass();
test.Method1();
test.Method2();




其实jquery也差不多,不过更复杂一些,如源代码所示:
 jQuery.fn = jQuery.prototype={
// Start with an empty selector
selector: "",

// The current version of jQuery being used
jquery: "1.4.2",

// The default length of a jQuery object is 0
length: 0,

// The number of elements contained in the matched element set
size: function() {
return this.length;
},

toArray: function() {
return slice.call( this, 0 );
},……
}


以上是一些基本的简单的介绍,下篇开始实现自己的jquery。对于扩展jQuery,另外发文。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值