闭包
闭包:就是能够读取其他函数内部变量的函数(函数里面套函数,内部函数访问外部函数变量),
在本质上,闭包是将函数内部和函数外部连接起来的桥梁。
作用:闭包中使用的变量会一直存储在内存中,类似全局变量 ,避免全局污染,可以解决全局变量的问题。
function fun(){
var c = 10;
return function(){
console.log(c++);
}
}
var f = fun(); //f = function(){ console.log(c++); }
f();//10
f();//11
例 :
用闭包方式完成下面代码的修改,使得属性user,id外界不可见
User = function(){}
User.prototype = {
id:””,
name:””,
getId:function(){return this.id},
setId:function(){this.id = id},
getName:function(){return this.name},
setName:function(){this.name=name}
}
//直接声明两个变量,这两个变量的作用域只是在这个函数体之中所以外界是不能访问的
var User = function () {
var id = "id";
var name = "name";
this.__proto__ = {
getId:function () {
return id;
},
setId:function (_id) {
id = _id;
},
getName:function () {
return name;
},
setName:function (_name) {
name = _name;
}
}
}
var u = new User();
u.setId("007");
u.setName("tom");
console.log(u.name,u.getName()); //undefined,tom