看板 Ajax 關於我們 聯絡資訊
※ 引述《tonest (這是啥??)》之銘言: : 小弟最近正在撰寫一些javascript的東西 : 看到了兩種架構(算OO嗎??) : 不太清楚兩者的區分 : 故來版上請教各位前輩 : 兩個架構如下 : 1. : ;(function($){ : var test = {}; : window.test = test; : })(jQuery); : 2. : (function(){ (function(window){ : var test = {}; : window.test = test; : })(window); : 目前知道的是第一種必須要在有包jQuery的網頁才可使用 : 但若僅只有差異在這點 : 又為何不都用第二種,這樣就都可以使用 : 不太確定這類問題是否有關鍵字可以查詢 : 或是否有前輩可以指教 : 感謝!! 最大的差異, 就是傳進去的參數不一樣呀, 特殊用意, 就是利用closure產生類似封裝的效果, 第一種有可能只是單純的想$來調用jQuery 通常多是為寫jQuery的plugins,把一些變數函數包裝起來, 第二種就真的有點特別, 多數人認為傳入window是為了加速, 但真的能加快多少?? jQuery原始碼中的傳入的二個參數, undefined 是為相容舊瀏覽器, 而 window 是為了生成一個sandbox, jQuery 的註解有寫 Use the correct document accordingly with window argument (sandbox) ecmascript 規範一個最頂層獨一無二的全域的特殊物件, 對現在的瀏覽器而言就是window, 這個參數看起來似乎沒什麼用, 但記得之前在greasemonkey裡是無法直接使用jQuery, 後來有人找到解決方法, 原來greasemonkey用firefox的sandbox包裝了物件, 只要把window用unsafeWindow代替傳入就能用了. 現在好像不必如此.. -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 112.104.185.189
s25g5d4:greasemonkey還是要用unsafeWindow吧? 07/13 22:24
s25g5d4:我之前寫userscript的時候有用到jQuery 還是需要 07/13 22:26
tonest:感謝大大的說明~3Q! 07/14 09:19