作者ChowMein (杉斑加紋)
看板Ajax
標題Re: [ js ] 請教javascript程式架構的問題
時間Fri Jul 13 18:16:23 2012
※ 引述《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
1F:推 s25g5d4:greasemonkey還是要用unsafeWindow吧? 07/13 22:24
2F:→ s25g5d4:我之前寫userscript的時候有用到jQuery 還是需要 07/13 22:26
3F:推 tonest:感謝大大的說明~3Q! 07/14 09:19