是时候谈谈JavaScript面向对象了!(咱们何时更须要它)

前端技术尤为是JavaScript,常常被后端以为不是正经编程语言,大多数是由于JavaScript是基于函数的语言,所以潜在上使得它在使用和发展上有所局限。html

我记得在90年代末和21世纪初,JavaScript主要用于使html页面更加动态。好比实现一些弹窗,跑马灯之类的视觉效果。前端

如今,咱们有不少框架,库,甚至后端系统都在使用JavaScript。用JavaScript开发一个移动应用和桌面应用程序-在之前是闻所未闻的,但现在,这些咱们常常据说甚至已经投入使用了。如今咱们还能够用JavaScript实现跨平台开发!java

JavaScript无处不在,你可使用JavaScript轻松完成不少有趣的东西。但随之而来的是潜在的长期问题。许多JavaScript开发者并无像java开发者同样习惯使用面向对象编程,或者说没有面向对象编程这方面的训练。这很正常,由于咱们常常为了追赶进度完成手头的工做,忽略了一些咱们还不知道的内容编程

什么是面向对象编程?

面向对象的编程是一种思想,一种心态。它背后的想法是,你为你想象中的对象建立了一个蓝图,而后一次又一次地调用它来完成各类各样的功能。每次你想使用一个对象时,你必须先建立它这样它才会存在,而后设置它的属性,以便使用附加到它的功能。这些功能被称为“方法”。后端

例如,一个CustomerOrder对象可能附加了一个GET:Order Details功能(又名方法)。bash

//基于类
class CustomerOrder{
  constructor(customerId,orderId){
    this.customerId = customerId;
    this.orderId = orderId
  }
  get orderDetails(){
    return this.pullOrderDetails();
  }
  pullOrderDetails(){
    //一些操做
    return 
  }
}
const order_1 = new CustomerOrder(87873,"Cus-001")

console.log(order_1.orderDetails)
复制代码

咱们来看另外一个基于函数的方法:框架

//基于函数
const customerId = 8787
const orderId = "Cus-001"
function pullOrderDetails(customerId,orderId){
  //一些操做
  return
}
console.log(pullOrderDetails(87873,"Cus-001"))
复制代码

上面的问题在于,函数的数量多起来时,很快就会变得混乱。虽然将全部内容都编写为函数,而后根据须要来调用,在一开始可能会很方便,可是日积月累,函数之间的关联关系错综复杂,一旦发生变动,你可能须要修改不少函数,也会引发不少未知问题。编程语言

可能有些难理解,咱们看下面的图(使用类的状况):函数

constructor是设置变量的地方,Getter和setter方法是类作事的入口。使用什么函数以及如何使用它们都是隐藏的。每次建立一个新对象时,整个类及其方法都会被“克隆”,并可访问须要的内容。发生变动时,咱们也只须要在类上一次修改,即可以全局生效。学习

咱们再看下面的图(使用函数的状况)

当咱们用一堆松散的函数编写代码时,它的更改范围一般没有定义。依赖项注入是使函数正常工做所必需的,而一个函数经常须要另外一个函数才能正常工做。从表面上看,基于函数的编程可能一开始看起来很简单,但从长远来看,维护它是一个逻辑上的噩梦。

使用面向对象编程,您只须要调用getter和setter方法来访问黑盒功能。做为类的消费者,你不须要知道它是如何工做的。你只须要知道它是有效的。

为何咱们要在JavaScript中采用面向对象编程

上面的两幅图能看出来,过分依赖基于函数的编程可能很快就能完成任务,可是长远来看,这会存在很高的风险。

随着代码量的增加,你就须要改变组织代码的思惟方式,并考虑采用面向对象。与经过一系列依赖注入串在一块儿的函数相比,对象的则更容易追踪和掌握。

下面的代码是基于函数:

你会须要知道整个调用链,以便弄清楚如何实现你的目的。固然也很乱,不易理解。

基于函数的编程的问题是,链的中断可能致使整个流程的失败。对于对象,一个被破坏的方法不会(也不该该)影响类的其余部分。

下面的代码是基于类(面向对象):

这种方法,可能代码量不会少多少,但你能够复用它,而不须要写很长的调用链。

当你思考问题时,是基于类,而不是一系列相互关联的函数时,代码天然会减小出现问题的风险。由于每一次依赖注入都会增长一次潜在错误的可能,并且寻找错误时,也会花费更多的时间和精力。、

最后

面向对象编程是一种主动的行为,你能够选择使用,也能够选择不使用。随着前端体系的日益庞大,代码量和应用场景也远超于从前,咱们更须要思考面向对象编程的重要性。

面向对象编程的资料:

developer.mozilla.org/zh-CN/docs/…

———————————————————————————————————————————————————

放学别走!长按二维码关注 【技术人生路】,无偿免费获取前端学习进阶资料,培训实战视频,就业指导等众多福利哦。我相信咱们都是爱学习爱进步的呀!

相关文章
相关标签/搜索