整個腳本是一個匿名函數(暫時叫它mainFn吧),函數被加載的時候便開始執行,mainFn可以接收兩個參數,執行時只傳遞一個參數window.
1. 具體解釋下這個寫法的意思:
2. window 函數執行時會傳入window,這個傳入的window是全局對象(通常為Window)的
3. 一個屬性且window=this,而傳入mainFn函數中作為其參數時,它會被存儲在
4. mainFn的調用對象中.在原型鏈中查找變量的策略是(非嵌套函數):先查找調用
5. 對象,再查找全局對象,所以這使得整個mainFn中使用的window時查找效率更高
6. undefined 由于執行時并未傳遞第二個參數,故變量undefined的值為undefined.早期版
7. 本的瀏覽器中全局對象可能沒有undefined屬性,所以不能直接使用它.通常避免
8. 這個問題的寫法是 window.undefined = window.undefined
然后在最后讓jQuery庫中最重要的對象jQuery成為了window對象的一個屬性,并可以簡寫為“$”。
其它的補充資料:
JQuery是個出色的javascript庫,最近結合它寫javascript,看了下源碼。
先從整體、全局的看,jQuery的源碼幾乎都在下面的代碼中:
代碼如下:
(function() {
//……
})();
第一個括號里面是個匿名函數,第二個括號表示馬上執行第一個括號里面的代碼。
首先明白,javascript里面是沒有命名空間的,要保證你的javascript函數、對象與其他的不沖突,這里用了javascript的一個技巧:你的所有javascript函數、對象都在一個匿名函數里面定義,確保了所定義的函數、對象的有效范圍,起到了命名空間的作用。既然作用范圍在這個匿名函數中,怎么被別人使用呢?下面看它的下面代碼:
var jQuery = window.jQuery = function(selector, context) {
//……
};
這里讓jQuery庫中最重要的對象jQuery成為了window對象的一個屬性,這樣就可以在其他地方像使用 document(document也是window的一個屬性)一樣使用jQuery了。也許使用過jQuery的朋友驚訝-我沒有使用jQuery對象,一直使用$的。沒錯,那是jQuery的同名對象:
window.$ = jQuery;
現在明白了吧。
這個庫的結構是這樣的:
代碼如下:
1. (function(window, undefined){
2. var document = window.document;
3. var jQuery = ...
4. ...
5. ...
6. })(window);
(function(window, undefined){ var document = window.document; var jQuery = ... ... ... })(window);
整個腳本是一個匿名函數(暫時叫它mainFn吧),函數被加載的時候便開始執行,mainFn可以接收兩個參數,執行時只傳遞一個參數window.
1. 具體解釋下這個寫法的意思:
2. window 函數執行時會傳入window,這個傳入的window是全局對象(通常為Window)的
3. 一個屬性且window=this,而傳入mainFn函數中作為其參數時,它會被存儲在
4. mainFn的調用對象中.在原型鏈中查找變量的策略是(非嵌套函數):先查找調用
5. 對象,再查找全局對象,所以這使得整個mainFn中使用的window時查找效率更高
6. undefined 由于執行時并未傳遞第二個參數,故變量undefined的值為undefined.早期版
7. 本的瀏覽器中全局對象可能沒有undefined屬性,所以不能直接使用它.通常避免
8. 這個問題的寫法是 window.undefined = window.undefined
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com