javascript函數閉包(closure)

一,首先感覺下javascript函數的閉包javascript

 

二,閉包java

1,定義:閉包就是可以讀取其餘函數內部變量的函數,因爲在javascript語言中,只有在函數內部的子函數纔可以讀取局部變量,所以能夠把閉包簡單的理解成:定義在一個函數內部的函數,簡而言之,閉包起到了將函數內部與函數外部鏈接起來的橋樑做用瀏覽器

2,做用:1,能夠讀取函數內部的變量;2,可讓這些變量的值始終保存在內存中閉包

3,注意點:1,首先由於閉包會使得函數中的變量都被保存在內存中,內存消耗很大,因此咱們不能濫用閉包,不然會對網頁性能形成影響。在ie瀏覽器中可能會出現內存泄露。解決方法是在退出函數前將不使用的局部變量所有刪除函數

      2,閉包會在父函數外部改變父函數內部變量的值。因此,若是你把父函數看成對象使用,把閉包當作它的公共方法,把內部變量看成它的私有屬性。這時要注意不可以隨便改變父函數內部變量的值。性能

 

三:練習this

  var name = "The Window";對象

  var object = {
    name : "My Object",blog

    getNameFunc : function(){
      return function(){ip

        return this.name;

      };

    }

  };

  alert(object.getNameFunc()());

彈出 「the window」  由於此時的this指向的是瀏覽器window對象

 

  var name = "The Window";

  var object = {
    name : "My Object",

    getNameFunc : function(){
      var that = this;
      return function(){

        return that.name;
      };

    }

  };

  alert(object.getNameFunc()());

彈出 「my object」  由於此時this指向的是當前的object對象

相關文章
相關標籤/搜索