# 其他知识介绍 对其他知识的总结和对项目中的疑问的解答 ## 方法和函数的区别 函数是一段在经过封装在单独作用域中的可执行代码; 方法是一段在对象上下文作用域中封装的可执行代码; ## 观察者模式和发布订阅模型的区别 总是有人问`观察者模式`和`发布订阅模式`有什么区别,网上也有一大堆解释,但是从来都没有统一、官方或者权威的描述,下面将就着我在这方面知识的理解做具体的解释; 不是`发布订阅模式`,实际上是`发布订阅模型`,它并不是一种`设计模式`; `模型`是一种构造系统架构的具体实施方案,`设计模式`则是一种架构抽象的思维方式; **观察者模式** `观察者模式`由其名一样,是指 `观察者` 主动观察到 `被观察者` 发生变化以后 `观察者` 自己做出相应操作的设计模式;其中`观察者`仅仅是观察(监听)`被观察者`,并不会干扰`被观察者`的任何状态; 例如:工厂里机器操作记录员,记录员仅仅是远远的看着(观察)机器运行,然后将机器的操作记录下来,记录员的任何操作都不会干扰机器的执行,但是机器的不同操作会导致记录员记录下不同的数据; **发布订阅模型** `发布订阅模型`其中是重点是订阅,`消费者`去订阅消息,`生产者`负责生产消息,通过第三方组件去存储、分发消息到`消费者`; 例如:人们去订阅报纸,报社生产报纸,而邮局这样的第三方则来临时存储报纸和准确分发不同的报纸到不同的人家中; 结论:观察者模式和发布订阅模型还是有很大区别的,观察者模式被观察者往往是具体的数据,且由观察者直接进行观察,发布订阅模型中的消费者具体的消费方法或者消费函数,并且消费的消息由第三方组件进行分发; **简单例子:** `观察者模式`:在vue中使用watch中的方法对data中的数据进行观察,在观察到数据变化以后执行相应的代码; `发布订阅模型`:使用u-node-mq中的emit发生数据到队列,再使用on方法订阅队列中的数据; ## 节流和防抖的区别 `节流`和`防抖`