• 请不要在回答技术问题时复制粘贴 AI 生成的内容
AndyAO
V2EX  ›  程序员

闭包和对象是一回事

  •  2
     
  •   AndyAO · Dec 12, 2021 · 2956 views
    This topic created in 1646 days ago, the information mentioned may be changed or developed.

    闭包和对象是一回事,都是封装数据,只不过闭包语法,主要应用于「头等函数」语言中,用来解决函数声明和执行时外部作用域出现变化产生的问题。

    8 replies    2021-12-15 12:29:16 +08:00
    35aZ4P8mT576683q
        2
    35aZ4P8mT576683q  
       Dec 13, 2021 via Android
    闭包封装并绑定了 this, 我觉得有点像 OOP 里的单例模式
    AndyAO
        3
    AndyAO  
    OP
       Dec 13, 2021
    @liberty1900 #2 不是单例,闭包生成函数可以被重复调用。

    当然,你也可以匿名它,生成器函数,用完就丢掉,这样倒是单例了。

    实质上这两个功能就是等价的,因为已经被证明可以相互模拟。

    只不过通常语法上不同,在不同的情景下使用起来方便性有区别。
    iamzuoxinyu
        4
    iamzuoxinyu  
       Dec 13, 2021
    写一个 lisp 解释器就能完全理解闭包这玩意了。
    kidblg
        5
    kidblg  
       Dec 13, 2021   ❤️ 1
    对象:带方法的数据
    闭包:带数据的方法

    v2ex 之前有过讨论: https://v2ex.com/t/743103
    yulii
        6
    yulii  
       Dec 13, 2021
    SICP 第三章的模块化,里面提到的一个编程语言的抽象概念——环境模型。看了这个就理解了。
    aguesuka
        7
    aguesuka  
       Dec 13, 2021
    我是这么认为的
    闭包等价于对象 (Closures are equivalent to Objects) ("闭包 ~ 对象" 为真)
    闭包和对象不是一回事 (Closures and Objects are not the same thing) ("闭包 ≡ 对象" 为假)
    julyclyde
        8
    julyclyde  
       Dec 15, 2021
    闭包是“不洁”的函数
    它的输入居然不是明确全部列出来的
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5076 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 49ms · UTC 09:40 · PVG 17:40 · LAX 02:40 · JFK 05:40
    ♥ Do have faith in what you're doing.