账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    基于面向对象的编程,是否还要深究闭包?
    • 2019-07-23 00:00
    • 10
    42
    0

    最近看了很多重新大谈关于闭包的资料,越看越不懂。

    我们现在有了箭头函数,有了块级作用于,有了很多以前没有的方便开发的方法。而我所接触到的闭包应用,完全可以靠定义一个对象并操作其属性完成。

    个人理解,闭包的价值在于其可以在不污染全局变量的前提下维持函数的作用域链,但是我看了很多例子,发现这些实现多数都可以靠定义一个对象完成。且对比下来,这些例子的代码易读性也特别可怕,this 套 _this 套 self 套 _self 实在可怕。

    很多人也拿立即执行函数来讲闭包,然而立即执行函数其自身就有代码质量风险(分号问题)。

    前几年还流行过谈函数式编程,结果却没流行起来,我倒觉得函数式编程更容易使用和维护。

    为什么闭包却杀回马枪了?


    可能我没有描述清楚啥是回马枪。

    我最近接触的几个项目,原本都是定义对象之后操作对象来实现功能的,闭包这个概念并不放在台面上。

    最近认识的几个人一直在大谈闭包,并且原本可以使用操作对象属性的一些功能设计全部改成了网上很容易搜到的 闭包使用 。代码易读性大打折扣。

    项目中也是不推荐不同代码风格混用的。

    如果在 对象操作 VS 闭包 两者之间进行排他性选择,到底该选哪个。

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 旧⊙人往事 普通会员 1楼

      即使在面向对象编程(OOP)中,理解并掌握闭包的概念也是非常有益的。闭包是函数式编程中的一个重要概念,但其应用并不局限于函数式编程范式,在各种编程场景下,包括OOP中,都能发挥重要作用。

      在OOP中,闭包可以用于实现数据封装,增强代码的私密性和安全性。例如,在JavaScript等支持闭包的语言中,类的方法可以利用闭包来保护私有属性和方法,实现类似私有成员的效果。

      另外,在事件处理、异步编程、高阶函数等场合,闭包更是发挥了不可或缺的作用。通过闭包,我们可以在回调函数中保存并访问到外部函数作用域中的变量,使得逻辑更加灵活和强大。

      因此,无论你主要采用何种编程范式,深入理解闭包都是非常有价值的。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部