亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JavaScript自執(zhí)行函數(shù)和jQuery擴展方法詳解

 更新時間:2017年10月27日 09:24:19   作者:Ayhan_huang  
這篇文章主要為大家詳細介紹了JavaScript自執(zhí)行函數(shù)和jQuery擴展方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下

我們通常將JS代碼寫在一個單獨的JS文件中,然后在頁面中引入該文件。但是,有時候引入后會碰到變量名或函數(shù)名與其它JS代碼沖突的問題。那么如何解決這個問題呢?作用域隔離。在JS中,作用域是通過函數(shù)來劃分的,將JS代碼封裝到函數(shù)中進行調(diào)用可以避免變量名/函數(shù)名沖突的問題,但是這也并不是萬無一失,因為封裝函數(shù)本身有可能和其它函數(shù)重名,解決方案:自執(zhí)行函數(shù)。

自執(zhí)行函數(shù)是用一對圓括號將匿名函數(shù)包起來,加括號(傳參)會立即執(zhí)行。因為函數(shù)無名字,實現(xiàn)了作用域的絕對隔離和函數(shù)名的沖突問題。基本形式如下:

(function () {
  console.log('do something');
})();

比如我們在custome.js文件中寫了一些JS邏輯,并封裝到函數(shù)init中。我們用自執(zhí)行函數(shù)將自己定義的函數(shù)init包起來,就像下面這樣。

(function () {

  function init() {
    console.log('execute init...');
  }

  init();
})();

當(dāng)我們在html中引入custome.js:<script src="custome.js"></script>,自執(zhí)行函數(shù)會立即執(zhí)行,進而執(zhí)行內(nèi)部定義的init函數(shù):

不過,自執(zhí)行函數(shù)立即執(zhí)行的特性,使其很難調(diào)用。通過定義jQuery擴展方法,可以解決這一問題,拿到自執(zhí)行函數(shù)調(diào)用和執(zhí)行的主動權(quán)。

首先我們看一下定義jQuery擴展方法的基本形式:

jQuery.extend({
  'myMethod': function () {
    console.log('do something');
  }
});

這樣,通過$.myMethod()或jQuery.myMethod()就可以調(diào)用上面定義的方法。

定義jQuery擴展方法還有另外一種方式:.fn

jQuery.fn.extend({
  'myMethod': function () {
    console.log('do something');;
  }
});

通過如上方式定義的擴展方法,需要通過jQuery選擇器調(diào)用,比如通過標簽選擇器$("button").myMethod(args)

了解了JS自執(zhí)行函數(shù)和jQuery擴展方法后,我們將二者結(jié)合起來。

下面我們利用自執(zhí)行函數(shù)立即執(zhí)行的特點,來定義jQuery擴展方法:

(function (jq) {

  function init() {
    console.log('do something');
  }

  jq.extend({
    'myMethod': function () {
      init();
    }
  })
})(jQuery);

說明,這個自執(zhí)行函數(shù)接收jQuery對象作為參數(shù),然后在內(nèi)部為jQuery定義一個擴展方法myMethod,該方法執(zhí)行真正的邏輯代碼init函數(shù)

調(diào)用:

<script src="jquery-3.2.1.js"></script>
<script src="custome.js"></script>
<script>

 $(function () {
  $.myMethod();
 });

</script>

說明:

jQuery文件引入后,jQuery對象全局可用;
緊接著引入自定義JS文件custome.js,其中的自執(zhí)行函數(shù)接收jQuery對象為參數(shù),立即執(zhí)行,在內(nèi)部為jQuery定義一個擴展方法myMethod
然后我們就可以在頁面加載完成后,通過調(diào)用$.meMethod()或jQuery.myMethod()來執(zhí)行init函數(shù)

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 阿里巴巴技術(shù)文章分享 Javascript繼承機制的實現(xiàn)

    阿里巴巴技術(shù)文章分享 Javascript繼承機制的實現(xiàn)

    這篇文章主要介紹了阿里巴巴技術(shù)文章,分享的是一篇關(guān)于Javascript實現(xiàn)繼承機制的文章,感興趣的小伙伴們可以參考一下
    2016-01-01
  • JavaScript CollectGarbage函數(shù)案例詳解

    JavaScript CollectGarbage函數(shù)案例詳解

    這篇文章主要介紹了JavaScript CollectGarbage函數(shù)案例詳解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • 如何使用electron-builder及electron-updater給項目配置自動更新

    如何使用electron-builder及electron-updater給項目配置自動更新

    這篇文章主要介紹了如何使用electron-builder及electron-updater給項目配置自動更新,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • 微信小程序在{{ }}中直接使用函數(shù)的方法示例

    微信小程序在{{ }}中直接使用函數(shù)的方法示例

    最近在學(xué)習(xí)微信小程序,在學(xué)習(xí)中遇到了一些問題,所以進行了總結(jié)了下,這篇文章主要給大家介紹了關(guān)于微信小程序在{{ }}中直接使用函數(shù)的相關(guān)資料,需要的朋友可以參考下
    2021-06-06
  • 微信小程序indexOf的替換方法(推薦)

    微信小程序indexOf的替換方法(推薦)

    這篇文章主要介紹了微信小程序indexOf的替換方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-01-01
  • 微信小程序基于Taro的分享圖片功能實踐詳解

    微信小程序基于Taro的分享圖片功能實踐詳解

    這篇文章主要介紹了微信小程序基于Taro的分享圖片功能實踐詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • javascript函數(shù)的call、apply和bind的原理及作用詳解

    javascript函數(shù)的call、apply和bind的原理及作用詳解

    javascript函數(shù)的call、apply和bind?本質(zhì)是用來實現(xiàn)繼承的,專業(yè)點說法就是改變函數(shù)體內(nèi)部this的指向,當(dāng)一個對象沒有某個功能時,就可以用這3個來從有相關(guān)功能的對象里借用過來,文中通過代碼示例介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • es6的數(shù)字處理的方法(5個)

    es6的數(shù)字處理的方法(5個)

    本文主要介紹了es6的數(shù)字處理的方法。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • swiper實現(xiàn)異形輪播效果

    swiper實現(xiàn)異形輪播效果

    這篇文章主要為大家詳細介紹了swiper實現(xiàn)異形輪播效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • 原生JS實現(xiàn)導(dǎo)航下拉菜單效果

    原生JS實現(xiàn)導(dǎo)航下拉菜單效果

    這篇文章主要介紹了JS實現(xiàn)導(dǎo)航下拉菜單效果,用原生JS實現(xiàn)的一個導(dǎo)航下拉菜單,下拉菜單的寬度與瀏覽器視口的寬度一樣,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-03-03

最新評論