2013-05-09 62 views
2

我是一个javascript新手,最近进入下面的代码。

(function($){ 

    if(!document.defaultView || !document.defaultView.getComputedStyle){ 
     var oldCurCSS = jQuery.curCSS; 
     jQuery.curCSS = function(elem, name, force){ 
      if(name !== 'backgroundPosition' || !elem.currentStyle || elem.currentStyle[ name ]){ 
       return oldCurCSS.apply(this, arguments); 
      } 
      var style = elem.style; 
      if (!force && style && style[ name ]){ 
       return style[ name ]; 
      } 
      return oldCurCSS(elem, 'backgroundPositionX', force) +' '+ oldCurCSS(elem, 'backgroundPositionY', force); 
     }; 
    } 
})(jQuery); 

什么是function($) {...} (jQuery)? PS:我也不太清楚代码是什么......如果可能的话请给它一个提示。

回答

3

这是一个自动执行的匿名函数,调用jQuery作为参数,它在函数签名中被重命名为$

既然您不知道jQuery.noConflict()是否已经在页面中使用过(特别是如果您正在编写像Plugins这样的可分发代码),那么您可以在函数内安全使用简写$。 )

它还可以防止污染全局命名空间的变量,它们封装使他们从功能外不可访问:

谁写的怎么一回事,因为他使用jQuery功能反正里面实际上是愚蠢的。

1

确保$的含义与jQuery的含义相同。其他图书馆可能会改变什么$的意思,所以这是必要的。

function($)jQuery作为参数被调用,因此$在函数内被设置为jQuery

1

这是一个自我执行的函数,把它想象成jQuery中的document.ready函数,除了这个函数在它加载后会触发。

(function(){})将声明该函数,但通过添加()这可以立即触发。 您也可以将参数s传递给此函数。 $实际上是jQuery的别名,因此要确保您使用的是jQuery,这是作为参数传递的,并且是作为约定的$的别名。

(function(myAwesomePlugin){})(jQuery);

这也是有效的。你可以使用它像myAwesomePlugin("#id").click() ...

1

基本上它是一个匿名函数,可以让jQuery与其他可能具有$ variable/function的javascript库很好地搭配使用。只要DOM被解析,它就会立即执行,并且如果有多个外观,则按照外观顺序调用它。在这一点上,文档不会显示,只是解析。

1

除了什么已经被说,这种自动执行功能封装了所有变量和其他功能,因此主要(窗口)命名空间仍然未受污染的所有变量和函数是“局部”。

相关问题