• <sub id="h4knl"><ol id="h4knl"></ol></sub>
    <sup id="h4knl"></sup>
      <sub id="h4knl"></sub>

      <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
      1. <strong id="h4knl"></strong>

      2. javascript閉包的定義及應用實例分析

        時間:2024-08-25 16:39:02 JavaScript 我要投稿
        • 相關推薦

        javascript閉包的定義及應用實例分析

          官方解釋

          “閉包”是一個擁有許多變量和綁定了這些變量的環境表達式(通常是一個函數),因而這些變量也是環境表達式的一部分。

          通俗解釋

          Javascript中所有的函數都是一個閉包。不過一般來說,嵌套的function產生的閉包更為強大,也是大部分時候我們所說的“閉包”。看如下代碼:

          復制代碼 代碼如下:

          這段腳本在執行完var c=a()之后,變量c實際上就指向了函數b,b中用到了變量i,再執行c()后就會彈出一個窗口顯示i的值。這段代碼其實就是一個閉包,為什么?因為函數a外的變量c引用了函數a內部的函數b。

          Javascript的垃圾回收機制

          由于javascript特殊的垃圾回收機制,才導致了閉包的產生。Javascript垃圾回收機制的大體規則如下:

          在javascript中,如果一個對象不再被引用,那么這個對象就會被GC回收。如果兩個對象相互引用,而不再被第3者引用,那么這兩個互相引用的對象也會被回收。而在上述的腳本中,函數a被b引用,函數b又被函數a外的c所引用,這就是為什么函數a執行后不被回收的原因。

          閉包的應用場景

          1. 保護函數內的變量安全。以上面的例子為例,函數a中變量i只有函數b才能訪問,而無法通過其他途徑訪問到,因此保護了i的安全性。

          2. 在內存中維持一個變量。依然如上面的例子,由于閉包,函數a中的i一直存在于內存中,因此每次執行c(),i都會加1。

          3. 通過保護變量的安全實現JS私有屬性和私有方法(不能被外部訪問)。如下,私有屬性和私有方法在Constructor外是無法訪問的:

          復制代碼 代碼如下:

          function Constructor(…){

          var that = this;

          var membername = value;

          function membername(…){…}

          }

        《&.doc》
        将本文的Word文档下载到电脑,方便收藏和打印
        推荐度:
        点击下载文档

        【javascript閉包的定義及應用實例分析】相關文章:

        Javascript 閉包引起IE內存泄露分析04-01

        javascript的閉包概念怎么理解03-29

        Javascript函數的定義和用法分析03-31

        JavaScript fontcolor方法入門實例03-29

        JavaScript中push(),join() 函數實例詳解03-31

        抽象語法樹在JavaScript中的應用03-25

        javascript分析運算符用法04-01

        JavaScript類定義原型方法的兩種實現的區別04-02

        德國留學申請實例分析03-19

        在线咨询
        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码
      3. <sub id="h4knl"><ol id="h4knl"></ol></sub>
        <sup id="h4knl"></sup>
          <sub id="h4knl"></sub>

          <sub id="h4knl"><ol id="h4knl"><em id="h4knl"></em></ol></sub><s id="h4knl"></s>
          1. <strong id="h4knl"></strong>

          2. 亚洲精品国产综合野狼 | 亚洲欧美中文日韩v在线97 | 特级婬片国产高清视频 | 亚洲国产中文一卡二卡三卡免费 | 日本在线一免费区 | 亚洲人成在线播放a偷伦 |

            javascript閉包的定義及應用實例分析

              官方解釋

              “閉包”是一個擁有許多變量和綁定了這些變量的環境表達式(通常是一個函數),因而這些變量也是環境表達式的一部分。

              通俗解釋

              Javascript中所有的函數都是一個閉包。不過一般來說,嵌套的function產生的閉包更為強大,也是大部分時候我們所說的“閉包”。看如下代碼:

              復制代碼 代碼如下:

              這段腳本在執行完var c=a()之后,變量c實際上就指向了函數b,b中用到了變量i,再執行c()后就會彈出一個窗口顯示i的值。這段代碼其實就是一個閉包,為什么?因為函數a外的變量c引用了函數a內部的函數b。

              Javascript的垃圾回收機制

              由于javascript特殊的垃圾回收機制,才導致了閉包的產生。Javascript垃圾回收機制的大體規則如下:

              在javascript中,如果一個對象不再被引用,那么這個對象就會被GC回收。如果兩個對象相互引用,而不再被第3者引用,那么這兩個互相引用的對象也會被回收。而在上述的腳本中,函數a被b引用,函數b又被函數a外的c所引用,這就是為什么函數a執行后不被回收的原因。

              閉包的應用場景

              1. 保護函數內的變量安全。以上面的例子為例,函數a中變量i只有函數b才能訪問,而無法通過其他途徑訪問到,因此保護了i的安全性。

              2. 在內存中維持一個變量。依然如上面的例子,由于閉包,函數a中的i一直存在于內存中,因此每次執行c(),i都會加1。

              3. 通過保護變量的安全實現JS私有屬性和私有方法(不能被外部訪問)。如下,私有屬性和私有方法在Constructor外是無法訪問的:

              復制代碼 代碼如下:

              function Constructor(…){

              var that = this;

              var membername = value;

              function membername(…){…}

              }