fe-interview
fe-interview copied to clipboard
[js] 第184天 说下你对面向对象的理解
第184天 说下你对面向对象的理解
当我需要对象的时候就new一个
组件也算是面向对象的一种用法吧。 万事万物皆可抽象,有特定的出入参,可嵌套,可继承, 对象内的数据和事务较为独立,是很棒的一种开发习惯。
哪怕你把所有数据和事务都丢进单独的 Object 中其实也阔以, 只是初始数据和私有变量可能还需要再搞搞而已。
每个对象能够接收消息,处理数据和发送消息给其他对象。每个对象都可以被看作是一个拥有清晰角色或责任的独立小机器。
一切皆对象。
说点边缘的,现在普遍的观点是在组件化的东西其实并不推荐用面向对象(Class)来做,就如React也推出了hooks,其实extends/implements这些OO的东西并不适用与前端组件化的编程,就像Vue3,也是用函数表示组件,而非很早之前传言的Class。面向对象更适合后端的业务,而非Web前端的UI编程,前端更适合用函数式的编程方式。(小白的一点愚见,欢迎指教,轻喷~)
嗯嗯,很值得深究的观点, 在我看来,框架选用函数式组件等于丢弃了 mounted 这些复杂的东西,对框架是很好的,可以更侧重于数据与识图的关系。但业务逻辑上,没有 created 后就得靠我们自己来管理何时异步请求了。 (小白言论,最新技术懂得不多,可能已经有了解决方案,欢迎指教~)
说说我的理解吧:面向对象思想,就是将万事万物中具有相关的属性,相关的方法的东西,归纳成一个类。
当我们想做某一件事情的时候,先找到能解决这件事情的一个类,然后创建这个类的一个实例,用实例去完成这件事情。
由于一个类中的属性和方法联系非常紧密,并且与另一个类中的属性和方法并不相关,所以能够实现高内聚,低耦合的目的。
面向对象有四大特征: 抽象、封装、继承、多态。 可以理解为是把事物抽象为一种类型,这种类型有自己的属性和方法,把复杂的事情简化为一个个方法和属性,我们不用关心内部代码的实现,只需要调用即可。JS中万物皆对象,需要解决什么问题,就将什么问题抽象对象,通过对象的方法来解决问题。