jQueryソースコード研究01

1287 ワード


研究の便宜上、自分で定義したjQueryオブジェクトをxQueryに変更しました.jQueryを拡張することを意味します.
まずjQuery全体の構造:
 
(function(window,undefined)
{
var xQuery = (function(){});
....
window.xQuery = window.$ = xQuery;
})(window);

なぜjQueryはこのような構造を使うのでしょうか?次のコードを見てみましょう:(function(){
	function ftn1()
	{
		return 'ftn1()';
	}
})();

function ftn1()
{
	return 'ftn2()';
}
alert(ftn2());//ftn2()
alert(ftn1());//    ,    

jQueryフレームワークの中のコードとjQueryフレームワーク以外のコードを分離するには、jQueryコードを匿名関数に入れるのが最善の方法です.上記のコードに示すように、コードを実行するときはftn 2()がアクセスできますが、ftn()1はアクセスできません.結果として、閉パッケージの中に置く方法は直接外部に引用されないことがわかります.では、なぜバッグの中を閉じる方法は外部に引用されないのでしょうか.理由はjavascriptの閉パッケージの原理であり、直接定義されたftn 2関数(直接scriptラベルの中にある)はwindowのオブジェクトであるため、ページがロードされると直接実行できるが、ftn 1()の外層はfunction(){}であり、javascriptの中で関数はfunction ftn(){}をこのように定義することができ、var ftn=function(){}をこのように定義することができ、呼び出すときはftn()であり、第2のftnはこのfunction()の別名である.これらの原理を知って、次の匿名関数を見てみましょう.これは別名のない関数に相当し、定義が終わったらすぐに実行され、中の空間は閉鎖的な空間であり、中の変数も外部環境から隔離され、外部は直接呼び出すことができない.しかし、定義クラスライブラリは常に外部から呼び出されるため、jQueryはwindowオブジェクトを関数内部に転送し、windowを通過する.xQuery = window.$ = xQuery;,外部環境がjQueryフレームワークの内部定義を呼び出すことができるようにする方法