闭包
这是我对闭包的一点小理解.有问题请直接指出,在此先谢过!
闭包的含义
封闭隔离的空间,在javascript中,只有函数能够符合这种特性;
为什么要用闭包呢?
因为在引用外部js文件(如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("男"));//再次修改报错
})();
加油!