JS高级之面向对象的概念

大家好,我是一碗周,一个不想被喝(内卷)的前端。如果写的文章有幸可以得到你的青睐,万分有幸~

这是【从头学前端】系列文章的第四十七篇-《面向对象的概念》

写在前面

概念

面向对象编程的全称为Object Oriented Programming,简称为OOP。面向对象编程是用抽象方式创建基于现实世界模型的一种编程模式。

例如,对于猫这种常见对象来说,我们可以看到它们具有某些明确的特征(如颜色、名字、体型等),能执行某些动作(如喵喵叫、睡觉、躲起来、逃跑等)。在OOP语义中,这些对象特征都叫做属性,而那些动作则被称为方法。

面向对象编程可以看作是使用一系列对象相互协作的软件设计。面向对象程序设计的目的是在编程中促进更好的灵活性和可维护性。凭借其对模块化的重视,面向对象的代码开发更简单,更容易理解。

面向对象编程的三个主要特征是:

  • 封装:所谓封装就是按照要求使用并得到对应的结果,而不需要知道其真实的执行原理是怎么样的。封装主要用于阐述对象中所包含(或封装)的内容,它们通常由两部分组成:

    • 相关的数据(用于存储属性)
    • 基于这些数据所能做的事情
  • 继承:继承通常是指类与类之间的关系。如果两个类都有相同的属性或方法,那么可以让一个类继承于另一个类,这样就不需要在前者再次定义同样的属性或方法。

    创建一个或多个类的专门门版本类方式称为继承(只支持单继承)。创建的专门版本的类通常叫做子类,另外的类通常叫做父类。

    在JavaScript中,继承通过赋予子类一个父类的实例并专门]化子类来实现。

  • 多态:不同的对象可以定义具有相同名称的方法,方法是作用于所在的对象中。这种不同对象通过相同方法的调用实现各自行为的能力,被称之为多态。

所有的程序是由一定的属性和行为对象组成的,不同的对象的访问通过函数调用来完成,对象间所有的交流都是通过方法调用,通过对封装对象数据,提高复用率。

聚合

所谓的聚合,有的时候也叫组合,其实质上就是将现有的几个对象合并为一个新的对象的过程。总的来说,这个概念强调的就是将多个对象合而为一的能力。通过聚合这种方法,我们可以将一个问题分解为多个更小的问题。这样一来,就可以解决许多困难的问题。

例如,手机是一个非常复杂的对象,我们如果想要知道他启动时发生的全部事情是基本不可以能的,但是如果我们将问题的抽象降低到一定的级别,只关注它几个组件对象的初始化工作,例如屏幕对象、CPU对象、摄像头对象等等,我们就很容易深入了解这些子对象情况,然后再将这些部分的结果合并起来,之前那个复杂问题就迎刃而解了。

构造函数

概念

构造函数又称为构造器或对象模板,是对象中的一个方法,在实例化时构造器被调用。在JavaScript中函数就可以作为构造器使用,因此不需要特别地定义一个构造器方法。

语法结构如下:

function Person(){
  // 属性或者方法
}
var person = new Person();
  • 这里的Person()并不是作为函数,而是构造函数。
  • 创建person对象需要使用 new 关键字。

构造函数的属性和方法

构造函数的属性实际上就是对象的变量,构造函数的方法实际上就是构造函数的函数。一个对象可以包含多个属性和方法,定义构造函数的属性和方法 时使用this关键字。

语法结构如下:

function Person(){
  this.属性名 = 属性值;
  this.方法名 = function() {
      方法体
  }
}

this关键字:代指利用当前构造函数创建的对象。

创建对象示例代码如下:

function Person(name) {
  this.name = name
}
var person = new Person('一碗周')
console.log('姓名: ' + person.name) // 姓名: 一碗周

构造函数与函数的区别

两者的共同点:

  1. 如果不看函数体的话,构造函数的和函数在定义上是没有区别的。
  2. 构造函数也是一个函数,创建方式是一样的,不过构造函数习惯首字母大写。

两者的区别:

  1. 调用方式不一样,作用也不一样。

    例如

    // * 调用函数 直接使用 Person()
    Person();
    // * 调用构造函数需要使用 new 关键字
    const person = new Person();
    
  2. 构造函数内部含有this指针。

{完}

写在最后

你如果看到这里,我感到很荣幸,如果你喜欢这篇文章,你可以为这篇文章点上一个小赞;你如果喜欢这个专栏,我会一直更新到百篇以上,可以点一下后面的链接从头学前端 - 一碗周的专栏进入之后给个关注。

最后也可以给我点个关注,万分荣庆。

往期推荐

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一碗周.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值