簡述閉包

閉包

這是我對閉包的一點小理解.有問題請直接指出,在此先謝過!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("男"));//再次修改報錯

    })();

加油!函數

相關文章
相關標籤/搜索