jQuery代码分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_24767091/article/details/85235858

1.匿名函数自执行

(function(){
})();

2.匿名函数自执行好处
    匿名函数自执行里面的所有东西都是一个局部的。防止和其他代码冲突 

(function () {
	var a=10;
})();
alert(a);//打印出来是a is not defined

3.如何访问到匿名函数自执行中的方法
    可以把你要对外提供的接口作为window的属性或者是方法

(function() {
	var a=10;
	function abc(){
		alert(a);
	}
	//将abc方法作为window的方法,就可以在匿名函数自执行外边进行访问了
	window.abc=abc;
})();
abc();

4.在jQuery中,$()是jQuery()的简写方式。
5.在jQuery中第21行到第94行定义了一些变量和函数.其中60到64行是一个特别重要的函数,就是平时用的$() jQuery()对外的接口

// Define a local copy of jQuery
jQuery = function( selector, context ) {
	// The jQuery object is actually just the init constructor 'enhanced'
	// Need init if jQuery is called (just allow error to be thrown if not included)
	return new jQuery.fn.init( selector, context );
},

但现在这个jQuery还是以局部变量的形式存在,需要提供对外接口

if ( !noGlobal ) {
	window.jQuery = window.$ = jQuery;
}

6.在第96到283行,都是给jQuery对象添加一些方法和属性。
    prototype(原型)是面向对象的东西,所以,jQuery是一个面向对象的程序,jQuery里写的都是跟面向对象有关的

jQuery.fn = jQuery.prototype

7.为什么jQuery是基于面向对象的程序

//jQuery是这样调用方法的。是不是和下面数组的使用方法非常像
//但实际上$("div")它本身是一个函数调用,但是函数调用的执行结果是一个对象,所以说jQuery是基于面向对象的程序
    $("div").css();
    $("div").text();
    //这是Array对象方法的使用方式,先实例化一个对象,然后使用对象调用方法
    var arr = new Array(3);
    arr.sort();
    arr.splice();
//61--64
jQuery = function( selector, context ) {
    //在这个函数执行完了就是一个new构造函数的过程,返回的就是一个jQuery对象,既然返回的是对象,就可以调用方法
    return new jQuery.fn.init( selector, context, rootjQuery );
}

8.285到347行 extend:是jQuery当中的一个继承方法,希望后续添加的方法都能挂在jQuery对象上,很方便扩展

9.

//通过实例调用的方法,是实例方法
    $().text();
    $().html();
//$是一个函数,在函数下面来扩展方法的话,就是扩展一些静态方法
//在jQuery当中,给面向对象扩展静态属性和静态方法叫做扩展工具方法
//工具方法和实例方法区别就在于,它既能给jQuery对象来用,也可以给原生的JS来用,实例方法只能给jQuery对象来调用
    $.trim();
    $.proxy();

10.静态方法和实例方法在jQuery中的关系
    可以把静态方法看做是在jQuery中的最底层,而实例方法是上一层或者是更高层的。
    很多方法都是实例方法,里面调用的都是工具方法

猜你喜欢

转载自blog.csdn.net/qq_24767091/article/details/85235858