闭包和对象的区别?
闭包: 行为以及数据的绑定
对象: 行为以及数据的绑定
感觉没差啊, 是不是可以使用对象来代替闭包?
闭包: 行为以及数据的绑定
对象: 行为以及数据的绑定
感觉没差啊, 是不是可以使用对象来代替闭包?
是啊, 记得之前看过很多讲这个的文章, 感觉说的很不明觉厉, 今天又仔细看了一下,感觉和对象差不多.
什么保存上下文环境, 驻留在内存中, 这不就是对象么.
“`javascript
function createIncrementor(start) {
return function () {
return start++;
};
}
var inc = createIncrementor(5);
inc() // 5
inc() // 6
inc() // 7
“`
“`java
class Incrementor {
private int start;
Incrementor(int start) {
this.start = start;
}
int inc() {
start++;
}
}
“`
自行车:代步工具
小轿车:代步工具
光看定义是感觉没差,但能不能相互代替?
一个比较轻,一个比较重;一个适用于简单(短距离)场境,一个适用于复杂(远距离)场境;一个结构简单,一个结构复杂。
https://www.cnblogs.com/edisonchou/p/4873315.html
嗯, 将来一定要好好拜读一下 SICP
{
let a = 0
document.body.addEventListener(‘click’, () => {
a = a + 1
console.log(a)
})
}
其实这已经是闭包了,不是在函数里返回函数才叫闭包,是因为 JS 以前只有函数作用域,原谅我上面的回帖考虑不周
出了这个块级作用域,再也不可能拿到变量 a,理应被销毁,但事件回调函数内引用了 a,需要维持环境,所以 a 不会被销毁,点击 body 可以看到 a 在不断+1
非常简单的就创建了一个安全的私有变量,这不比 class 写法爽多了?