区别 (function($){...})(jQuery)、$(function(){ })和$.fn
一、(function($){…})(jQuery)
首先f(wàn)unction(arg){...}定義了一個(gè)匿名函數(shù),參數(shù)為arg,而調(diào)用時(shí)需要在函數(shù)后面寫上括號(hào)和實(shí)參,由于操作符的優(yōu)先級(jí),函數(shù)本身也需要括號(hào),也就成了:
(function(arg){...})(param)
這就相當(dāng)于定義了一個(gè)參數(shù)為arg的匿名函數(shù),并將param作為參數(shù)來(lái)調(diào)用這個(gè)匿名函數(shù)
而(function($){...})(jQuery)則是一樣的,之所以只在形參使用$,是為了不與其他庫(kù)沖突,所以實(shí)參用jQuery,其實(shí)就等于其實(shí)可以這么理解,不過(guò)要注意的是fn是不存在的,函數(shù)直接定義,然后就運(yùn)行了,然后就壓縮成如下:
(function($){...})(jQuery)
二、$(function(){})
是$(document).ready(function(){...})的簡(jiǎn)寫形式,意思就是頁(yè)面載入后執(zhí)行其中的代碼,也可以被寫成:
兩者相比:
jQuery(function(){...});用于存放操作DOM對(duì)象的代碼,執(zhí)行其中代碼時(shí)DOM對(duì)象已經(jīng)存在。不可用于存放開發(fā)插件的代碼,因?yàn)閖Query對(duì)象沒有得到傳遞,外部通過(guò)jQuery.method也調(diào)用不了其中的方法(函數(shù))。
(function(){...}(jQuery);用于存放開發(fā)插件的代碼,執(zhí)行其中代碼時(shí)DOM不一定存在,所以直接自動(dòng)執(zhí)行DOM操作的代碼,請(qǐng)小心使用。
簡(jiǎn)單理解是(function($){...})(jQuery)用來(lái)定義一些需要預(yù)先定義好的函數(shù)
$(function(){...})則是用來(lái)在DOM加載完成之后運(yùn)行/執(zhí)行那些預(yù)先定義好的函數(shù)。
開發(fā)jQuery插件時(shí),一般先看jQuery(function(){...}),意義為在DOM加載完畢后執(zhí)行了ready()方法,再看(function(){...})(jQuery).
三、$.fn
$.fn是指jQuery的命名空間,加上fn的方法及屬性,會(huì)對(duì)每一個(gè)jquery實(shí)例有效。
如定義了$.fn.initPageMe(),即對(duì)jQuery擴(kuò)展了一個(gè)abc方法,那么后面你的每一個(gè)jQuery實(shí)例都可以引用這個(gè)方法了。
四、$與$.fn
$是jQuery的一種表現(xiàn)形式。
jQuery的擴(kuò)展方式有:
$拓展的方法是靜態(tài)方法,可以使用$直接調(diào)用,其拓展的方式有兩種,一般使用$.extend({});;而$.fn拓展的方法是實(shí)例方法,必須由“對(duì)象”$("")來(lái)調(diào)用,其拓展的方式同樣有兩種,一般使用$.fn.extend({ })。
其中,fn與prototype等同使用;jQuery.fn = jQuery.prototype
總結(jié)
以上是生活随笔為你收集整理的区别 (function($){...})(jQuery)、$(function(){ })和$.fn的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如何解决浏览器缩小出现横向滚动条时网页背
- 下一篇: 网页里如何使用js禁用控制台