一,首先感覺下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對象