ES6之class类

简介: 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"

感谢大家的阅读,如有不对的地方,可以向我提出,感谢大家!

相关文章
|
8月前
|
传感器 存储 人工智能
AI智能体:实现AGI的关键一步与未来展望
AI智能体是能自主感知、决策与行动的“数字大脑”,它让AI从只会回答问题进化为能动手解决问题。相比传统工具,它具备自主性、反应性、前瞻性、交互性和迭代性,可像助手一样主动完成复杂任务。如今已在政务、医疗、教育、金融等领域落地,成为提升效率的“数字员工”。2025年被视为“AI智能体元年”,技术、资本与政策合力推动其迈向规模化应用,开启人机协同新阶段。
1417 4
|
8月前
|
JavaScript 前端开发 关系型数据库
3.2 nodejs连接mysql
本节介绍Node.js连接MySQL的配置方法:通过创建`.env`文件管理数据库配置,实现解耦;在`config/db.js`中使用`mysql2/promise`和`dotenv`模块建立连接池,并提供连接测试功能,确保数据库连接稳定可靠。
|
JavaScript 前端开发
iconfont 图标在vue里的使用
iconfont 图标在vue里的使用
1008 0
|
前端开发 数据处理
对象数据的读取,看这一篇就够了!Object.keys()、Object.values()和Object.entries()用法详解;如何获取对象原型链上的属性
Object.keys()、Object.values()和Object.entries()都是利于对象操作的便捷方法,能有效提升数据处理的效率。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
关系型数据库 MySQL Windows
mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法
本文讲解:mysql出现ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost‘ (10061)的解决方法
|
存储 开发工具 git
【SourceTree】Your local changes to the following files would be overwritten by merge【解决办法】
【SourceTree】Your local changes to the following files would be overwritten by merge【解决办法】
|
安全
document.write和innerHTML和innerText的区别
document.write和innerHTML和innerText的区别
368 8
|
前端开发 JavaScript 机器人
详解《基于 javascript 的流程图编辑框架LogicFlow
详解《基于 javascript 的流程图编辑框架LogicFlow
4473 0