简述闭包

闭包

这是我对闭包的一点小理解.有问题请直接指出,在此先谢过!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("男"));//再次修改报错

    })();

加油!函数

相关文章
相关标签/搜索