当前位置: 首页 > article >正文

ES6之class类

ES6提供了更接近传统语言的写法,引入了Class类这个概念,作为对象的模板。通过Class关键字,可以定义类,基本上,ES6的class可以看作只是一个语法糖,它的绝大部分功能,ES5都可以做到,新的class写法只是让对象原型的写法更加清晰、更面向对象编程的语法而已。

一、class类的基本用法

基本语法: class 类名 { constructor{ } }

    class Student {
        // 构造方法 名字不能修改
        constructor(name,age) {
            this.name = name
            this.age = age
        }
        // 添加方法
        // 方法必须使用该语法
        fun() {
            console.log("我是学生")
        }
    }
    let zs = new Student("张三",18)
    console.log(zs) 

在这里插入图片描述

二、class类静态成员

static

    class Student {
        // 静态属性
        static name = "张三"
        static fun() {
            console.log("我是学生")
        }
    }
    let zs = new Student()
    console.log(zs.name) //undefined
    console.log(Student.name) //张三

为什么我们zs.name打印undefined呢?
因为static属性方法只属于类,不属于实例对象

三、class类继承

    class Student {
        // 构造方法 名字不能修改
        constructor(name, age) {
            this.name = name
            this.age = age
        }
        // 添加方法
        // 方法必须使用该语法
        fun() {
            console.log("我是学生")
        }
    }
    // 类继承必须要写extends
    class Student1 extends Student {
        // 构造方法
        constructor(name,age,id,tel){
            // super
            super(name,age) //Student.call(this,name,age)
            this.id = id
            this.tel = tel
        }
        learn() {
            console.log("学习")
        }
    }
    let zs = new Student1("张三",18,10,123456)
    console.log(zs)

请添加图片描述

四、class中的getter与setter

    class Student {
        get name(){
            console.log("姓名被读取了");
            // 需要有返回值 要不然直接 .上name会输出undefined
            return "hihi"
        }
        // set 中需要有参数
        set name(value){
            console.log("姓名被修改了");
        }
    }
    let s = new Student()
    console.log(s.name);
    s.name = "say"

在这里插入图片描述
感谢大家的阅读,如有不对的地方,可以向我提出,感谢大家!


http://www.kler.cn/a/145201.html

相关文章:

  • PythonFlask框架
  • React Router v6配置路由守卫
  • Java创建项目准备工作
  • 2007-2020年各省国内专利申请授权量数据
  • 程序地址空间
  • Time Constant | RC、RL 和 RLC 电路中的时间常数
  • Typescript基础面试题 | 02.精选 ts 面试题
  • Liunx Ubuntu Server 安装配置 Docker
  • 串口通信基础知识介绍
  • JAVA编程规范-集合、并发(阿里手册)
  • A-莲子的软件工程学【算法必会题目】(JavaPythonC++实现)
  • 【深度学习】基于深度学习的超分辨率图像技术一览
  • CleanMyMac X好不好用?有哪些优势
  • 【ARM 嵌入式 编译系列 2.2 -- 如何在Makefile 中添加编译时间 | 编译作者| 编译 git id】
  • 信息素养大赛知识点
  • 决策树(第四周)
  • 安卓用SQLite数据库存储数据
  • Could not resolve all files for configuration ‘:app:androidJdkImage‘.
  • UVA437 巴比伦塔 The Tower of Babylon
  • AIGC ChatGPT4总结Linux Shell命令集合
  • 求链表环的起始位置
  • Centos 7、Debian、Ubuntu中tree指令的检查与下载
  • 机器学习【03】在本地浏览器使用远程服务器的Jupyter Notebook【conda环境】
  • gitlab各版本安装注意点:
  • Jenkins CI/CD
  • 数仓成本下降近一半,StarRocks 存算分离助力云览科技业务出海