三十、如果服務器返回錯誤,那么通過傳遞給錯誤回調函數的 jqXHR 對象的 .status 內容,可以檢測到該錯誤。換句話說,使用 jqXHR.status 的值可以對不同的錯誤給出不同的響應。
然而,服務器錯誤只有你檢測到它的時候才有用。有些錯誤可以立即檢測到,而有些情況則會導致請求到最終錯誤響應之間產生很長的時間延遲。
在沒有既定的服務器端超時機制的情況下,我們可以在客戶端強制設定請求的超時。通過給timeout 選項傳遞一個以毫秒表示的時間值,就相當于告訴 $.ajax(): 如果響應在多長時間內沒有返回,那么就調用它自己的 .abort() 方法。
三十一、默認情況下,cookie的值將在會話期間保持,直到關閉瀏覽器標簽頁為止。此外,默認情況下,cookie還是與設置它的頁面關聯的。如果想改變這個默認設置,可以為這個函數提供一個選項對象作為第三個參數。這是jQuery插件乃至jQuery核心函數的典型使用模式。
比如,要想讓cookie在整個站點中都可以訪問到,而且讓它在7天之后再過期,就可以像這樣來調用函數: $.cookie(‘cyclePaused’, ‘y’, {path: ‘/’, expires: 7}) 。
三十二、jQuery內置的某些功能是通過全局函數提供的。所謂全局函數,實際上就是 jQuery 對象的方法,但從實踐的角度上看,它們是位于 jQuery 命名空間內部的函數。核心jQuery庫提供的很多全局函數都是實用方法;所謂實用方法,就是一些常用功能的快捷方式,但即使手工編寫同樣功能的代碼也不是很難。數組處理方法 $.each() 、 $.map() 和 $.grep()都是實用方法。
要向 jQuery 的命名空間中添加一個函數,只需將這個新函數指定為 jQuery 對象的一個內容即可。
三十三、擴展全局jQuery對象
事實上,利用 $.extend() 函數,還可以通過另外一種文法來定義全局函數。
這樣調用 $.extend() 就可以給全局jQuery對象添加內容(如果原來有相同的內容,就會替換原來的內容)。
三十四、 使用命名空間隔離函數
我們的插件在jQuery命名空間中創建了兩個獨立的全局函數。但這樣寫有可能污染命名空間。換句話說,其他jQuery插件也可能定義相同的函數名。為了避免沖突,最好的辦法是把屬于一個插件的全局函數都封裝到一個對象中。
這個模式的本質是為所有的全局函數又創建了一個命名空間,叫做 jQuery.mathUtils 。
雖然我們還稱它們為全局函數,但實際上它們已經成了 mathUtils 對象的方法了,而mathUtils 對象則保存在 jQuery 對象的內容中。結果,在調用它們時就必須得加上插件的名字了:
使用這種技術(以及足夠獨特的命名空間),就能夠避免全局函數污染命名空間。
選擇命名空間