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"

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

相关文章
|
5月前
ES6中的class类 及 递归
ES6中的class类 及 递归
27 3
ES6学习(7)class
ES6学习(7)class
|
4月前
|
存储 JavaScript 前端开发
ES6 class 类
【7月更文挑战第27天】
21 1
|
JavaScript
对TS里接口、extends和类的理解
对TS里接口、extends和类的理解
93 1
|
存储 JavaScript
【TS】class类和接口
【TS】class类和接口
110 0
ES6 class使用方法
ES6 class使用方法
67 0
|
JavaScript
【ES6】类
【ES6】类
55 0
|
JavaScript Java C++
ES6-Class如何优雅的进行“糖化”
这是一篇番外篇,其实他的主线是由一篇ES6-Class科普文章引发的“惨案”。虽然是番外篇,但是有些剧情还是不容错过的。 现在我们来进入番外篇的主线:ES6的Class是ES5构造函数的语法糖。
|
JavaScript 前端开发 Java
ES6_Extends如何对ES5的继承进行“糖化”
我用我拙劣的代码来将这层糖的成分细细分析一下。 下面一些方法,都是基于class被脱糖之后的分析。关于class是如何被脱糖的过程===>请先查看ES6-Class如何优雅的进行Prototype“糖化” 内容很精彩,但是不要忘记回来看这个。这个剧情也挺赤鸡的。