闭包

闭包:就是能够读取其他函数内部变量的函数(函数里面套函数,内部函数访问外部函数变量),
在本质上,闭包是将函数内部和函数外部连接起来的桥梁。
作用:闭包中使用的变量会一直存储在内存中,类似全局变量 ,避免全局污染,可以解决全局变量的问题。

function fun(){
    var c = 10;
    return function(){
        console.log(c++);
    }
}
var f = fun(); //f = function(){ console.log(c++); }
f();//10
f();//11

 

 

例 :

用闭包方式完成下面代码的修改,使得属性userid外界不可见

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

posted @ 2022-09-26 20:38  九毛九  阅读(21)  评论(0)    收藏  举报