本文阅读时长大约为10分钟
今日内容概述:
闭包、装饰器
闭包
实质就是函数的嵌套,内层函数往往会用到外层函数的数据
作用:
可以实现函数的功能,并且可以保存数据
相对于对象来说实现同样的功能(方法、保存数据)更节约内存
闭:把数据封闭在这个函数里面,
定义闭包:
创建一个闭包必须满足以下几点:
必须有一个内嵌函数
内嵌函数必须引用外部函数中的变量
外部函数的返回值必须是内嵌函数
闭包函数的调用流程
调用闭包的外层函数,返回闭包中的内层函数的引用
调用这个闭包函数的返回值,其实是在调用闭包里的内层函数
闭包和对象的区别:
闭包和对象都可以存储变量和方法
对象的系统开销大,闭包的系统开销小
对象是面向对象编程的思维模式
闭包是面向过程编程的思维模式,函数式编程
思考:函数、匿名函数、闭包、对象,当做实参时,有什么区别?
匿名函数能够完成基本的简单功能。。。传递的是这个函数的引用,只有功能
普通函数能够完成较为复杂的功能。。。传递的是这个函数的用意,只有功能
闭包能够完成较为复杂的功能。。。传递的是这个闭包中的函数以及数据,因此传递是功能+数据
对象能够完成最为复杂的功能。。传递的是很多数据和很多功能,因此传递的是功能+数据
装饰器
一、函数装饰器
装饰器的功能是将被装饰的函数当作参数传递给与装饰器对应的函数(名称相同的函数),并返回包装后的被装饰的函数
无参数的装饰器
有参数的装饰器
无返回值的装饰器
有返回值的装饰器
通用的装饰器
不管是有无参数,有无返回值用通用的装饰器都行
一个装饰器装饰多个函数
一个装饰器可以装饰多个函数 ,
在调用前就已经开始装饰了
装饰的时候并不会互相影响
多个装饰器装饰一个函数
离函数近的先装饰
装饰器中内层函数的执行顺序,按照函数上所写的装饰器的顺序调用
二、类装饰器
类装饰器现在只需要有个了解,后面会再详细介绍
闭包和装饰器比较绕,一会进去,一会出来,感觉自己应该是绕出来了,不过没有实际应用,也不知道这是个什么鬼玩意,听说在后面的框架中会大量使用,希望到时候不要钻里面出不来。
最近主线任务有点慢,总是在搞一些奇奇怪怪的支线任务,明天自习,要好好追一下主线了。
加油!!!
END
领取专属 10元无门槛券
私享最新 技术干货