JS学习第9天——面向对象(ES6中的类class、constructor构造函数、类的继承extends、super关键字、面向对象tab栏切换案例)
创始人
2024-05-31 05:49:32
0

目录

  • 一、面向对象
    • 1、面向过程
    • 2、面向对象
    • 3、两者对比
  • 二、ES6中的类和对象
    • 1、面向对象的思维特点
    • 2、对象
    • 3、类class
    • 4、类constructor构造函数
  • 三、类的继承
    • 1、继承
    • 2、super()关键字
    • 3、注意点
  • 四、面向对象案例

一、面向对象

两大编程思想:① 面向过程面向对象

1、面向过程

面向过程POP((Process Oriented programming):分析好了步骤,然后按照步骤解决问题

2、面向对象

面向对象OOP((Object Oriented Programming):以对象功能来划分问题,而不是步骤
面向对象特性
封装性继承性 多态性

3、两者对比

对比面向对象面向过程
优点由于面对对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、易维护、易复用、易扩展性能比面向对象高,适合跟硬件联系很紧密的东西,比如单片机
缺点性能比面向过程低没有面对对象易于维护、易复用、易扩展

面向过程的方法写出来的程序像一份蛋炒饭,用面向对象写出来的程序像一份盖浇饭

二、ES6中的类和对象

1、面向对象的思维特点

① 抽取(抽象)对象共用的属性和行为封装成一个(模板)
② 对类进行实例化,获取类的对象

2、对象

在JS中,对象是一组无序的相关属性和方法的集合,所有的事物都是对象,比如字符串、数值、数组、函数等
对象是由属性和方法组成的,属性是事物的特征,方法是事物的行为

3、类class

在ES6中新增了类,通过class关键字声明一个类,之后以这个类来实例化对象
类抽取了对象的公共部分,通过类实例化一个具体的对象
创建类

class name {// 逻辑
}
// 实例化类
var xxx = new class();

注意:类必须使用 new 实例化对象

4、类constructor构造函数

constructor()方法是类的构造函数用于传递参数,返回实例对象

通过new关键字生成对象实例时,会自动调用constructor()方法。如果没有显示定义,类内部会自动帮我们创建一个constructor()
《1》语法

class Person {constructor(name,age) {this.name = name;this.age = age;say() {console.log(this.name + '你好');}}
}//  创建实例
var ldh = new Person("刘德华",18);
console.log(ldh.name);
ldh.say();

注意:方法之间不能通过逗号隔开,同时方法也不需要添加function关键字

三、类的继承

子类可以继承父类的一些属性和方法

1、继承

extends关键字:表明子类继承父亲的属性和方法

class Father {
}
class Son extends Father { // 子类继承父类
}

2、super()关键字

super关键字用于访问和调用父类上的函数,可以调用父类的构造函数也可调用普通函数

// 父类
class Father {constructor(fatherName) {this.fatherName = fatherName;}say1() {console.log("我是父亲1");}say2() {console.log("我是父亲2");}
}
// 子类
class Son extends Father {// 子类可以继承父类constructor(fatherName, sonName) {super(fatherName);super.say1(); // 子类调用父类的构造函数this.sonName = sonName; // 子类定义自己独有的属性}
}
var lala = new Son("父亲", "儿子");
lala.say2(); // 子类调用父类的普通函数

注意: 子类在构造函数中使用super关键字时, 必须放到 this 前面 (必须先调用父类的构造方法,再使用子类构造方法)

3、注意点

① ES6中没有变量提升,所以必须先定义类,才能通过类实例化对象
② 类里面的共有属性和方法必须要加this使用
③ 类中this指向:constructor 里面的this指向实例对象, 方法里面的this 指向这个方法的调用者

四、面向对象案例

tab栏切换


Document
测试1
测试2
测试3

运行结果
在这里插入图片描述

相关内容

热门资讯

修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
【前端】‘??‘与‘||‘有什... 0 问题 经常写const data = res.data.a ?? ''或者const d...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
牛客计算器的改良(Python... 文章目录1.题目描述2.输入描述:3.输出描述:4.示例15.分析6.代码7.结语 链接࿱...
正大杯|市调大赛|2023备赛... 关键信息 同时随着精细化养宠趋势的深入,宠物消费类目日渐丰富。 本报告通过 Niuco...
QGIS下载在线地图(Goog... 前言 国内外有很多在线地图下载软件,但功能单一,基本上只能下载数据&#x...