位置: 编程技术 - 正文

js闭包的用途详解(js闭包作用问题解决应用)

编辑:rootadmin

推荐整理分享js闭包的用途详解(js闭包作用问题解决应用),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:js闭包详解,js闭包的原理,js闭包的使用场景,js闭包原理使用场景,js闭包作用问题解决应用,js闭包的应用,js闭包的应用,js闭包原理使用场景,内容如对您有帮助,希望把文章链接给更多的朋友!

我们来看看闭包的用途。事实上,通过使用闭包,我们可以做很多事情。比如模拟面向对象的代码风格;更优雅,更简洁的表达出代码;在某些方面提升代码的执行效率。

1 匿名自执行函数

我们知道所有的变量,如果不加上var关键字,则默认的会添加到全局对象的属性上去,这样的临时变量加入全局对象有很多坏处,比如:别的函数可能误用这些变量;造成全局对象过于庞大,影响访问速度(因为变量的取值是需要从原型链上遍历的)。除了每次使用变量都是用var关键字外,我们在实际情况下经常遇到这样一种情况,即有的函数只需要执行一次,其内部变量无需维护,比如UI的初始化,那么我们可以使用闭包:

我们创建了一个匿名的函数,并立即执行它,由于外部无法引用它内部的变量,因此在执行完后很快就会被释放,关键是这种机制不会污染全局对象。

2缓存

再来看一个例子,设想我们有一个处理过程很耗时的函数对象,每次调用都会花费很长时间,那么我们就需要将计算出来的值存储起来,当调用这个函数的时候,首先在缓存中查找,如果找不到,则进行计算,然后更新缓存并返回值,如果找到了,直接返回查找到的值即可。闭包正是可以做到这一点,因为它不会释放外部的引用,从而函数内部的值可以得以保留。

js闭包的用途详解(js闭包作用问题解决应用)

这样,当我们第二次调用CachedSearchBox.attachSerachBox(“input1”)的时候,我们就可以从缓存中取道该对象,而不用再去创建一个新的searchbox对象。

3 实现封装

可以先来看一个关于封装的例子,在person之外的地方无法访问其内部的变量,而通过提供闭包的形式来访问:

得到结果如下: undefined default abruzzi 4 闭包的另一个重要用途是实现面向对象中的对象,传统的对象语言都提供类的模板机制,这样不同的对象(类的实例)拥有独立的成员及状态,互不干涉。虽然JavaScript中没有类这样的机制,但是通过使用闭包,我们可以模拟出这样的机制。还是以上边的例子来讲:

运行结果如下: default john default jack 由此代码可知,john和jack都可以称为是Person这个类的实例,因为这两个实例对name这个成员的访问是独立的,互不影响的。

以上便是js闭包的作用了,非常简单易懂吧,希望对小伙伴们有所帮助

浅谈JavaScript 框架分类 如果是从内部架构与理念划分,目前JavaScript框架可以划分为5类。第1种出现的是以命名空间为导向的类库或框架,如创建一个数组用newArray(),生成一个

javascript 回调函数详解 回调函数定义回调函数就是一个通过函数指针调用的函数。如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用为调用它所指向

推荐JavaScript实现继承的最佳方式 实现JavaScript继承的最简单的方式是call方法(或者apply方法)及原型链方法,但这两种方法都有缺陷,而其混合体就是很好的继承实现方式。下面举例说

标签: js闭包作用问题解决应用

本文链接地址:https://www.jiuchutong.com/biancheng/384786.html 转载请保留说明!

上一篇:js闭包实例汇总(js闭包的使用)

下一篇:浅谈JavaScript 框架分类(js框选)

  • 嵌入式软件产品的增值税即征即退具体实例
  • 什么叫简易税
  • 境外收入个人所得税抵免限额
  • 增值税普票没有税号可以开吗
  • 个税申报错误已过申报期怎么修改
  • 万元版增值税发票最多可以开多少
  • 零售商业企业经营的特点主要在于
  • 在建工程在现金流量表中
  • 作家以及作品
  • 报关单和进口增值税专用缴款书联系
  • 长期投资包括哪些会计科目
  • 计提递延所得税资产
  • 项目结余是什么意思
  • 研发准备金的计提比例是多少
  • 所有的企业都能采用免费策略
  • 出借包装物收取的押金属于什么
  • 分支机构多预缴应该怎么退税呢?
  • 银行贷款利息可以减免吗
  • 技术服务合同增值税税率3%
  • 为什么增值税发票税率是1%
  • 学校的房子归哪里管
  • 资产原值包含残值吗
  • 基金会可以投资企业吗
  • 一次性发放奖金个税怎么计算
  • 银行承兑汇票承兑手续费是多少
  • 印花税申报数据来源
  • 增值税发票为什么要勾选认证
  • 中介公司代发工资合法吗
  • 酒店布草间有摄像头吗
  • 资产减值损失汇算清缴需要调增嘛?
  • 电脑网络提示ip地址错误怎么办
  • PHP:pg_fetch_array()的用法_PostgreSQL函数
  • 建筑安装发票可以外地开吗
  • 金融业的特殊性指的是
  • 购买材料发票未到如何做账
  • 财政预算单位可以既是省级又是中央
  • php2008
  • php使用for循环计算1到100的奇数和
  • vuejs props
  • 先收票后收货
  • 固定资产转卖会亏本吗
  • Chatgpt私有化部署(全流程)
  • wordpress如何批量导入商品
  • 餐厅如何计提固定成本
  • 发票内容服务费可以吗?没有明细
  • 工资与劳务报酬是否合并缴纳个税
  • 开源php 系统
  • 织梦的首页怎么换图片
  • 货代一般一个柜利润多少
  • 劳务费走应付职工薪酬
  • 年度奖金个税计算器
  • 小规模纳税人企业所得税2023
  • 视同销售收入是纳税调整项目吗?
  • 已收款未开票未发货能确认收入吗
  • 公司租用房屋用交房产税吗
  • 典当行收房产证吗直接可以拿钱吗
  • 收款凭证和付款凭证是出纳人员收款、付款的依据
  • 计提工资和发放工资的账务处理
  • sql server字段
  • sqlserver全文检索
  • linux如何安装c语言编译器
  • win8创建新用户
  • win10系统自带的游戏在哪
  • windowsxp开机启动项在哪里设置
  • 安装windows7之前,应该做好准备工作
  • symtray.exe - symtray是什么进程 有何作用
  • win7开始菜单没有启动文件夹
  • opengles版本过低怎么办
  • css布局的经典网站
  • unity4.1
  • linux搭建php运行环境
  • angularjs和后端交互
  • javascript有几种类型
  • python语言例子
  • 人脸识别身份验证
  • 湖南税务发票查询系统查不到外省的发票
  • 国家税务局申请电子发票怎么申请
  • 留抵税额退税政策2023
  • 四川税务2021
  • 契税减税、免税条件
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设