Re: [ js ] 請教javascript程式架構的問題

看板Ajax作者 (杉斑加紋)時間14年前 (2012/07/13 18:16), 編輯推噓2(201)
留言3則, 2人參與, 最新討論串2/2 (看更多)
※ 引述《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

07/13 22:24, , 1F
greasemonkey還是要用unsafeWindow吧?
07/13 22:24, 1F

07/13 22:26, , 2F
我之前寫userscript的時候有用到jQuery 還是需要
07/13 22:26, 2F

07/14 09:19, , 3F
感謝大大的說明~3Q!
07/14 09:19, 3F
文章代碼(AID): #1F__Lwf0 (Ajax)
討論串 (同標題文章)
文章代碼(AID): #1F__Lwf0 (Ajax)