ES6之class类

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

一、class类的基本用法

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

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

二、class类静态成员

static

javascript 复制代码
    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类继承

javascript 复制代码
    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

javascript 复制代码
    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"


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

相关推荐
程序员黑豆2 小时前
Java包装类:基本类型与对象的桥梁
java·前端·ai编程
bugcome_com5 小时前
JWT 知识小课堂:从入门到精通,一文吃透 JSON Web Token
前端·json
To_OC5 小时前
写了三天 Next.js,我的 React 世界观被拆了又装回去
前端·全栈·next.js
独泪了无痕5 小时前
viewer.js 安装与配置指南:实现图片预览功能
前端·vue.js
起床学FPGA7 小时前
AI回答问题之后,会自动跳到最下面的问题
开发语言·javascript·ecmascript
Fluxart.ai8 小时前
电商商品图审核怎么自动化?规则引擎、人工复核与发布门禁
java·前端·自动化
why技术8 小时前
AI 写的文章,可能都带着手敲一遍都去不掉的“隐形水印”。
前端·人工智能·后端
愚公搬代码8 小时前
【愚公系列】《Android应用案例开发大全》016-LBS类应用掌上杭州(辅助工具类的开发)
android·前端
CodeSheep8 小时前
又一个华为天才少年,离职了!
前端·后端·程序员
kyriewen9 小时前
面试官说"打开你的AI工具"——我才发现,他考的根本不是写代码
前端·人工智能·面试