作者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