美文网首页JavaScript理论知识
25:什么是 js 的闭包?有什么作用,用闭包写个单例模式

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

作者: 小小前端搬运工 | 来源:发表于2022-06-01 21:19 被阅读0次

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

闭包的应用:

模仿块级作用域。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);

相关文章

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

    MDN 对闭包的定义是:闭包是指那些能够访问自由变量的函数,自由变量是指在函数中使用的,但既不是函数参数又不是函数...

  • 闭包??

    什么闭包,闭包有什么用?http://js.jirengu.com/pogadikofa/1/闭包是在某个作用域内...

  • js 闭包实现单例模式

    在学习闭包的时候,想看看闭包如何来实现一个单例模式,可是发现网上百度出来的基本上用闭包实现的单例模式都是错误的,大...

  • 闭包,定时器

    问题 1.什么是闭包? 有什么作用 闭包(英语:Closure),又称词法闭包(Lexical Closure)或...

  • js闭包问题理解

    闭包是js的一个难点也是它的一个特色,是我们必须掌握的js高级特性,那么什么是闭包呢?它又有什么用呢? js的作用...

  • 一周一章前端书·第5周:《你不知道的JavaScript(上)》

    第5章:作用域闭包 到底什么是闭包 本章讲解闭包(Closures),它与作用域工作原理息息相关。 首先我用自己总...

  • python函数部分

    什么是闭包,闭包的常用用法,怎样判断是不是闭包,闭包的作用是 1、什么是闭包 2、常用用法 3、判断是不是闭包 4...

  • 闭包、跨域、this指向问题

    1.闭包是什么?用let怎么实现闭包?有什么优点和缺点? 闭包的定义:闭包就是指有权访问另一个函数作用域中变量的函...

  • 彻底搞懂JS闭包各种坑

    闭包是js开发惯用的技巧,什么是闭包?闭包指的是:能够访问另一个函数作用域的变量的函数。清晰的讲:闭包就是一个函数...

  • 前端基础(问答15)

    keywords: 闭包、定时器。 什么是闭包? 有什么作用 内层函数调用外层函数的变量,该内层函数即为闭包。本质...

网友评论

    本文标题:25:什么是 js 的闭包?有什么作用,用闭包写个单例模式

    本文链接:https://www.haomeiwen.com/subject/skcfmrtx.html