位置: 编程技术 - 正文

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

发布时间:2024-02-27

推荐整理分享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框选)

  • 一般纳税人没有开票要交税吗
  • 税收 特征
  • 监控系统维护费计入什么科目
  • 个体工商户属于非法人组织吗
  • 核定征收可以不开免税普票吗
  • 自来水税率是9%还是3%
  • 售后回购的增值税税率
  • 转移性支付收入是什么
  • 外购固定资产账务处理
  • 个人承包承租转包转租取得的所得
  • 怎么处理未抵扣增值税形成的留抵税额?
  • 收款收据是否可以做账
  • 报税时其他收入
  • 筹建期发生的费用
  • 无偿赠送材料的会计处理
  • 待处理财产损益是什么意思
  • 产权转移书据印花税是双方交吗
  • 没有运输经营范围能不能开运输发票
  • 开具增值税发票销货清单的最新规定是什么
  • 租赁业务增值税纳税义务发生时间
  • 信托真实案例
  • 增值税在免税范围内,附加税怎么做
  • 企业为什么要缴纳增值税
  • 合并往来分录
  • 农村合作社收到奖金分录
  • 兼营销售的销售额的确定
  • 库存现金的主要内容有哪些
  • 坏账准备的相关账务处理
  • 超过小规模纳税人标准能不转一般纳税人吗?
  • 非盈利组织固定资产没入帐 怎么调账
  • 公司投资一家公司然后再投资
  • vue3 script setup withdefault
  • php session用法
  • netbeans for php
  • python字典删除键值对方法
  • 小规模纳税人增值税税率
  • 年报数据和四季度数据一样吗
  • 怎样申请土地增值税补贴
  • 金蝶kis资产负债表中预付款项年初余额公式怎么设置?
  • 小规模普通发票几个点的税
  • 文化事业建设费的征收范围
  • 购买礼品的会计怎么做账
  • 帝国cms标签调用大全
  • 帝国cms8.0版
  • 直接免征的税款属于政府补助吗
  • 开具增值税专用发票的承诺书
  • 进项票和销项票金额一样可以吗
  • 工业用地便宜
  • 租赁厂房对方不租怎么办
  • 畜类生产性生物资产计算折旧的最低年限
  • 税收滞纳金能不能超过税款
  • 应付账款长时间收不回怎么处理呢
  • 费用发票的种类
  • 场地租用招标方案怎么写
  • 帮客户支付的机票计入什么科目
  • 预付调整到其他应付款
  • 基本户转法人个人账户如何做账
  • centos rpcbind
  • mysql 注入漏洞
  • win10系统预览版
  • mac launchctl
  • win1020h2正式版
  • win7自动更新失败怎么删除更新启动
  • win10用户账户guest
  • 下载随手调
  • node.js中的http.response.end方法使用说明
  • 安卓广播的作用
  • 单例类python
  • js过滤filter
  • De facto standard 世界上不可思议的事实标准
  • u3d地形编辑贴图
  • 时间戳的差值
  • javascript运行环境有哪些
  • 事务所是干什么的会计
  • 保障性住房是否可以买卖
  • 群租房怎么举报电话
  • 济南槐荫税务局办税大厅电话
  • 湖北商铺契税2021年新规
  • 国税地税数据共多少
  • 湖北省国家税务局官网
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号