這是我對閉包的一點小理解.有問題請直接指出,在此先謝過!javascript
閉包的含義
封閉隔離的空間,在javascript中,只有函數可以符合這種特性;java
爲何要用閉包呢?
由於在引用外部js文件(如jquery,各類框架)時防止變量重名形成的問題,同時也使代碼更具隱私性; jquery
獲取閉包中數據的方法:
通常採用 return 對象,由於對象能夠添加多個方法,讓每一個方法返回對應的值閉包
下面是一個閉包的案例參考框架
//閉包,把全部代碼都寫在自調用函數裏,以防重名; (function () { function foo(name,age,gender) { var flag=false; //設置一個節流閥,判斷條件 return { //這裏返回一個對象 get_Name:function() { //給對象設置方法 return name; },set_Name:function (value) { return name=value; },get_Age:function () { return age; },get_Gender:function () { return gender },set_Gender:function (value) { if(flag==false){ //當你修改過一次性別後,再次修改將會報錯; flag=true; return gender=value; }else{ throw new Error("您已經更改過性別了,只能修改一次"); } } } } var F=foo("劉躍盛",23,"男"); //調用函數foo()並把返回的對象賦值給到變量 F ; var A=foo("章旭卉",21,"女"); console.log(A.set_Name("章舒涵")); console.log(F.set_Gender("女")); //修改性別 console.log(F.set_Gender("男"));//再次修改報錯 })();
加油!函數