重置Service类属性状态问题?
来源:6-5 从下拉刷新实现认识面向对象实例与静态方法

爱吃鱼的羊
2023-05-04
reset() {
this.page = 1
this.count = 4
this.data = []
this.hasMoreData = true
return this
}
return this 这块没想明白为什么要访回 this
我试着删除了 this 也没报错。
再追问,是不是我缺了哪块知识点,所以没看懂老师写的这行代码。
写回答
2回答
-
不返回this无法实现调用的时候链式调用。课程里讲过,忘了在哪了,这是个设计模式上的知识点。062023-05-06
-
沁尘
2023-05-06
我来详细回答下。
从使用层面上来说,这里如果不返回 this,那么你在调用的时候,就只能先调用 reset()函数,然后再调用分页请求的方法。也就是两步调用。但是如果这里返回 this,你就能在调用 reset()之后,紧跟上一个.(这里有个点)然后直接访问分页请求方法。抛开原理和工程实践不谈,这种用法就是流畅,一气呵成,一行代码搞定。
从原理上讲的话,篇幅就有点多了,涉及到 JS 中 的 this 和原型链的设计原理,这块同学需要自行搜索资料学习。
从工程实践上来说,不管什么语言,都能做到这种调用效果,我们一般称呼“链式调用”,这个称呼也很形象,假如我们在一个类方法中最后都返回 this,那么在调用的地方我们就能通过不断.(这里有个点)的方式去调用实例下的方法。这么做的目的除了简化代码行数以外,其实背后还隐含着一个经典、高频使用的设计模式——建造者模式,这块也需要同学自行搜索资料学习。
提交局限于篇幅,这里没法展开跟你解释原理和工程实践上的要点,同学在自行探索的过程中遇到什么疑惑可以随时跟我交流。
00
相似问题