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