闭包和对象是一回事,都是封装数据,只不过闭包语法,主要应用于「头等函数」语言中,用来解决函数声明和执行时外部作用域出现变化产生的问题。
1
limao 2021-12-12 20:39:34 +08:00
|
2
liberty1900 2021-12-13 00:49:35 +08:00 via Android
闭包封装并绑定了 this, 我觉得有点像 OOP 里的单例模式
|
3
AndyAO OP @liberty1900 #2 不是单例,闭包生成函数可以被重复调用。
当然,你也可以匿名它,生成器函数,用完就丢掉,这样倒是单例了。 实质上这两个功能就是等价的,因为已经被证明可以相互模拟。 只不过通常语法上不同,在不同的情景下使用起来方便性有区别。 |
4
iamzuoxinyu 2021-12-13 10:20:10 +08:00
写一个 lisp 解释器就能完全理解闭包这玩意了。
|
5
kidblg 2021-12-13 13:25:48 +08:00 1
|
6
retamia 2021-12-13 15:27:59 +08:00
SICP 第三章的模块化,里面提到的一个编程语言的抽象概念——环境模型。看了这个就理解了。
|
7
aguesuka 2021-12-13 16:11:06 +08:00
我是这么认为的
闭包等价于对象 (Closures are equivalent to Objects) ("闭包 ~ 对象" 为真) 闭包和对象不是一回事 (Closures and Objects are not the same thing) ("闭包 ≡ 对象" 为假) |
8
julyclyde 2021-12-15 12:29:16 +08:00
闭包是“不洁”的函数
它的输入居然不是明确全部列出来的 |