对象是穷人的闭包,闭包是穷人的对象
Feb 10, 2023
本篇博客默认各位已经接触过
JS 函数
,并且对闭包
有一定的理解
我对函数的理解
一个或多个语句组成
、完成特定功能
、相对独立
的代码就叫做函数
但是,在之前这可不叫做函数,这叫「子程序」
最开始程序员写的程序大部分是「汇编」,后来才有的 C
、CPP
之类的语言,但那个时候没有「函数」这个概念,它只有一个叫做「子程序」
「子程序」是什么呢:比如我们写了很多行代码,其中有 几行代码
是用来完成一些 特定的功能
,那么这 几行代码
就取了个名字,叫做「子程序」—— routine
至于为什么叫 routine
,这就跟汇编有关了
而这个子程序又分为 3 种,分别为:函数( Function )
、过程( Procedure )
、方法( Method )
- 函数:如果一个「子程序」有返回值,它就叫
函数
- 过程:如果一个「子程序」没有返回值,它就叫
过程
(因为它只走了个过程,没有任何返回) - 方法:如果一个「子程序」在一个
类
中或者对象
中,就叫方法
而在 JavaScript 中,我们没有「子程序」,只有 函数
和 方法
Q:那为什么没有过程呢?
A:因为 JS 的所有 函数
都有 返回值
,因为即使你不 return
,也是默认返回 undefined
Q:而函数的返回值是由什么决定的呢?
A:调用时
输入的参数 和 定义时
的环境
什么是闭包
我在这篇博客中写的很详细了 用人话阐述 JS 中的「闭包」 请看一遍
我再说一下 闭包
的特点吧
- 能让一个
函数
维持住一个变量
- 但并不能维持这个变量的
值
- 尤其是变量的值会
改变
的时候
那我们来玩玩这个闭包吧!
对象是穷人的闭包
- 对象也可以维持住一个变量
- 如果一门语言不支持闭包,你可以用对象代理
1 | // 使用对象 |
闭包是穷人的对象
- 如果一门语言不支持对象,你可以用闭包代理
1 | function createPerson(name, age) { |
你看,这个 person
是不是就很像一个对象?
总结
所以,闭包
在函数里面就是用来维持一个变量的,如果用 对象
也可以代替 闭包
,用 闭包
也可以代替 对象
,它们是可以用来互相代替的
感谢阅读,下次见 :)
cd ../