JavaScript 类和对象

本文介绍了JavaScript中的类和对象,包括面向对象的思维特点、类的创建、属性与方法的添加、类的继承以及使用类时应注意的点。通过示例详细讲解了constructor方法、super关键字的使用以及类的继承机制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

面向对象 更贴近我们的实际生活
可以使用面向对象来描述现实世界事物 但是事物可以分为具体的事物和抽象的事物
比如说 手机 和 华为
手机就是抽象的 泛指所有手机
华为就是具体的 特指华为品牌的手机

面向对象的思维特点

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

面向对象编程我们考虑的是有哪些对象 按照面向对象的思维特点
不断创建对象
指挥对象做事情

对象

这里的对象指的是现实生活中的对象
在现实生活中 所有东西都是对象
对象指的是一个具体的事物 看得见也摸得着的实物
比如说 一本书 一个人等等
一个网页 , 一个数据库 等等也是一个对象

在我们JavaScript中 对象一组无序的相关属性和方法的集合
所有事物都是对象 比如字符串 数组 函数等等
所以我们可以理解为
只要是对象 就是由属性和方法组成的
属性: 事物的特征
方法: 事物的行为

class 类

在ES6中新增了类的概念 可以用关键字 class 来声明一个类 之后以这个类来实例化对象
简单的说
类的使用方法和构造函数类似 但相比起来语法更加规范

创建类

语法如下
在这里插入图片描述

添加属性

我们的开发中
不太可能创造空对象 一般对象都有属性
我们es6中用class创建对象 也可以添加属性
利用constructor()方法

constructor()方法

constructor写在class里面
语法如下

class Star{
      constructor (uname,age){
      this.uname = uname;
      this.age = age;
      }

    }

我们实例化一个对象并打印出来看看结果如何

在这里插入图片描述

类里面添加方法

对象里面不只有属性 还有方法
我们也可以类里面添加方法
这里我们要知道几个类的规范
1 类里面的函数不需要加function
2 类里面多个函数和方法之间不需要添加逗号
那我们按照规范来添加方法试试看

在这里插入图片描述

类的继承

在没有ES6的时代,想要实现继承是一个不小的工作。
一方面我们要创建父类的属性,另一方面我们需要继承父类的方法

但是在类中
我们可以用上extends
语法如下
class 继承属性的类 extends 被继承属性的类{}
因为这里是创造一个函数同时继承被继承函数的属性和方法
所以要记得加上{}

案例如下
在这里插入图片描述
发现方法还有属性都可以调用
在这里插入图片描述

super()

当super 作为函数调用时, 它代表的指向的是父类的构造函数,在子类的构造函数必须执行一次 super 函数
简单的说 就是调用了一次父类的函数
我们看下面的代码

class Father {
  constructor(x,y){
    this.x = x;
    this.y = y;
  }
  sum(){
    console.log(this.x+this.y);
  }
}
class Son extends Father{
  constructor(x,y){
    this.x = x;
    this.y = y;
  }

}
let x =new Son(2,4);
x.sum();

我们让Son继承了Father的属性和方法
并且实例化了一个对象
如何我们试试方法的调用
在这里插入图片描述
这里报错是因为this的指向问题
虽然继承了方法 但是在类Father的方法中 this指向的还是类Father
这时候我们就要用上super()函数
在这里插入图片描述
这里的x和y代表子类的x和y
调用的时候 把子类的x和y分别传递给父类的x和y

从而达到了我们想要的效果
在这里插入图片描述

调用普通函数

在我们开发中 不是只有调用构造函数 也要调用普通函数
这时候我们也可以用super()来调用普通函数

语法 super.要调用的函数名()

class Father{
         sayhi(){
           return '啊 困';
         };
       }
       class Son extends Father{
         sayhi(){
           console.log('睡觉了');
         }
       }
       let x =new Son();
       x.sayhi();

这时候我们打印的结果还是子类的sayhi内容

在这里插入图片描述

那么我们想要它打印的父类的结果
就使用super来调用普通函数
在这里插入图片描述

注意规范 super要放在this的前面

在我们实际开发中
子类继承父类 还会额外开辟新的方法

在这里插入图片描述
但是如果这时候我们调用了父类函数
就会报错
在这里插入图片描述
所以我们要把super写在this前面
在这里插入图片描述

使用类的注意点

注意点1

在es6中类是没有变量提升的 所以必须先定义类 才能通过类实例化对象
简单的说 就是类必须写在实例化的前面
在这里插入图片描述

注意点2

我们在普通函数中想要调用构造函数的属性
必须加上this
在这里插入图片描述
在这里插入图片描述

注意点3

当我们在类的构造函数中
添加方法函数的时候 也要添加this

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值