校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > js语言和框架 > 闭包相关
题目

什么是js的闭包?有什么作用,用闭包写个单例模式

解答

MDN对闭包的定义是:闭包是指那些能够访问自由变量的函数,自由变量是指在函数中使用的,但既不是函数参数又不是函数的局部变量的变量,
由此可以看出,闭包=函数+函数能够访问的自由变量,所以从技术角度讲,所有JS函数都是闭包,但是这是理论上的闭包,
还有一个实践角度上的闭包,从实践角度上来说,只有满足1、即使创建它的上下文已经销毁,它仍然存在,2、在代码中引入了自由变量,才称为闭包

闭包的应用:
1、模仿块级作用域
2、保存外部函数的变量
3、封装私有变量

单例模式:

var Singleton = (function(){
var instance;
var CreateSingleton = function (name) {
this.name = name;
if(instance) {
return instance;
} // 打印实例名字
this.getName();
// instance = this;
// return instance;
return instance = this;
}
// 获取实例的名字
CreateSingleton.prototype.getName = function() {
console.log(this.name)
}
return CreateSingleton;
})();
// 创建实例对象1
var a = new Singleton('a');
// 创建实例对象2
var b = new Singleton('b');
console.log(a===b);
C 0条回复 评论

帖子还没人回复快来抢沙发