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"
感谢大家的阅读,如有不对的地方,可以向我提出,感谢大家!