最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

淺談js閉包理解

 更新時間:2019年04月01日 14:51:34   作者:yujin0222  
這篇文章主要介紹了js閉包理解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

閉包是js中的一大特色,也是一大難點。簡單來說,所謂閉包就是說,一個函數能夠訪問其函數外部作用域中的變量。

閉包的三大特點為:

1、函數嵌套函數

2、內部函數可以訪問外部函數的變量

3、參數和變量不會被回收。

舉例來說:

function test(){
   var a=1;
   return function(){
    alert(a);
   }
  }
  var try=test();
  try();//彈出a的值

這個例子中,變量a在test方法外部是無法訪問的,但test方法里面,嵌套了一個匿名函數,通過return返回,test作用域中的變量a,

可以在匿名函數中訪問。并且當test方法執(zhí)行后,變量a所占內存并不會釋放,以達到嵌套的函數還可以訪問的目的。

閉包的作用在于,可以通過閉包,設計私有變量及方法。

舉例來說:在java中創(chuàng)建perosn類,含有私有變量name。

public class Person{
  private String name='wy';
  public Person(val){
    name=val;
  }
  public void setName(val){
    name=val;
  }
  public String getName(){
   return name;
  }
}

在js中實現類似java創(chuàng)建類的功能:

(function(){
      var name="wangyu";
      Person=function (val) {
        name=val;
      }
      Person.prototype.setName=function(val){
        name=val;
      }
      Person.prototype.getName=function () {
        return name;
      }
    })();
   var person1=new Person("sj");
   alert(this.name)//undefined 因為在function作用域外不能訪問
   alert(person1.getName());//sj

在function里面的name,由于是在function作用域中,所以外部無法訪問,但是可以通過創(chuàng)建person對象,調用person的方法,來達到修改和訪問name值的目的,類似于java類中的私有變量,外部無法訪問,只能通過類方法訪問。

再看一個私有變量的例子:

var aaa = (function(){
    var a = 1;
    function bbb(){
        a++;
        alert(a);
    }
    function ccc(){
        a++;
        alert(a);
    }
    return {
        b:bbb,       //json結構
        c:ccc
    }
  })();
  alert(aaa.a)//undefined 
  aaa.b();   //2
  aaa.c()   //3

總結:

1、閉包是指有權訪問另一個函數作用域中的變量的函數,創(chuàng)建閉包的最常見的方式就是在一個函數內創(chuàng)建另一個函數,通過另一個函數訪問這個函數的局部變量。閉包的缺點就是常駐內存,會增大內存使用量,使用不當很容易造成內存泄露。

2、不必糾結到底怎樣才算閉包,其實你寫的每一個函數都算作閉包,即使是全局函數,你訪問函數外部的全局變量時,就是閉包的體現。

以上所述是小編給大家介紹的js閉包理解詳解整合,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!

相關文章

  • JavaScript實現表單元素的操作

    JavaScript實現表單元素的操作

    這篇文章介紹了JavaScript操作表單元素的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-05-05
  • 淺談Javascript常用正則表達式應用

    淺談Javascript常用正則表達式應用

    這篇文章主要介紹了Javascript常用正則表達式應用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-03-03
  • JavaScript中的事件循環(huán)方式

    JavaScript中的事件循環(huán)方式

    這篇文章主要介紹了JavaScript中的事件循環(huán)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • js函數中onmousedown和onclick的區(qū)別和聯系探討

    js函數中onmousedown和onclick的區(qū)別和聯系探討

    了解這兩個事件的區(qū)別,但是實際并沒有使用到這兩個事件的區(qū)別去做一些操作,通常使用onclick的時候也可以使用onmousedown,使用onclick的時候更多一些
    2013-05-05
  • JavaScript onkeypress事件入門實例(按下或按住一個鍵盤按鍵)

    JavaScript onkeypress事件入門實例(按下或按住一個鍵盤按鍵)

    這篇文章主要介紹了JavaScript onkeypress事件入門實例,onkeypress事件捕捉按下或按住一個鍵盤按鍵的情況,需要的朋友可以參考下
    2014-10-10
  • 在javascript中關于節(jié)點內容加強

    在javascript中關于節(jié)點內容加強

    本篇文章,小編為大家介紹,關于在javascript中關于節(jié)點內容加強的問題
    2013-04-04
  • Redis基本知識、安裝、部署、配置筆記

    Redis基本知識、安裝、部署、配置筆記

    這篇文章主要介紹了Redis基本知識、安裝、部署、配置筆記,本文講解了基本知識、安裝Redis、Redis的配置等知識,需要的朋友可以參考下
    2015-03-03
  • js常用的鍵盤事件有哪些(用法示例)_鍵碼keyCode對照表

    js常用的鍵盤事件有哪些(用法示例)_鍵碼keyCode對照表

    用戶按下鍵盤上的鍵,首先會觸發(fā)keydown事件,然后是keypress事件,最后是keyup事件。其中,keydown和keypress事件是在文本框發(fā)生變化之前被觸發(fā);而keyup在文本框發(fā)生變化之后被觸發(fā)。如果用戶按下一個鍵不放,就會重復觸發(fā)keydown和keypress事件。
    2023-02-02
  • JavaScript入門教程(4) js瀏覽器對象

    JavaScript入門教程(4) js瀏覽器對象

    navigator 瀏覽器對象,包含了正在使用的 Navigator 的版本信息。反映了當前使用的瀏覽器的資料。JavaScript 客戶端運行時刻引擎自動創(chuàng)建 navigator 對象。
    2009-01-01
  • JavaScript DOM學習第六章 表單實例

    JavaScript DOM學習第六章 表單實例

    在這一章我有一個檢查用戶輸入然后打印用戶輸入的表單和代碼。下面我會著重講解檢測文本的代碼。
    2010-02-02

最新評論

三明市| 邢台县| 微山县| 侯马市| 蒙城县| 舒兰市| 遵化市| 息烽县| 南靖县| 五台县| 夹江县| 鹤壁市| 永年县| 微山县| 宜君县| 柳河县| 湘阴县| 大埔区| 长海县| 宁乡县| 美姑县| 陕西省| 湛江市| 师宗县| 武定县| 西丰县| 承德县| 溧水县| 闸北区| 逊克县| 鲜城| 金坛市| 建平县| 贺兰县| 黎平县| 富民县| 南召县| 大余县| 左权县| 韩城市| 沅陵县|