es6学习--class
es6引入了 Class(类)这个概念,作为对象的模板。通过class关键字,可以定义类。
1.基本语法
class Person{ constructor(name,age){ this.name = name; this.age = age; } toString() { return "我叫" + this.name +",今年" +this.age +"岁了!"; } } var person = new Person('wu',12); console.log(person.toString());
constructor方法是类的默认方法,通过new命令生成对象实例时,自动调用该方法。一个类必须有constructor方法,如果没有显式定义,一个空的constructor方法会被默认添加。
类必须使用new调用,否则会报错。这是它跟普通构造函数的一个主要区别,后者不用new也可以执行。
2.表达式形式定义
let Person = class { constructor(name,age){ this.name = name; this.age = age; } sayName() { return "我叫" + this.name +",今年" +this.age +"岁了!"; } } var person = new Person('wu',12); console.log(person.sayName());
3.不存在提升,不存在私有方法(可以自己模拟)
4.静态方法
如果在一个方法前,加上static关键字,就表示该方法不会被实例继承,而是直接通过类来调用,这就称为“静态方法”。
class Person { static getName() { return "wu" } } console.log(Person.getName());
父类的静态方法,可以被子类继承。
继承语法
class 子类 extends 父类{
}
父类有一个静态方法,子类可以调用这个方法。
静态方法也是可以从super对象上调用的。
class Person { static getName() { return "wu" } } class Student extends Person { static getName(){ return super.getName() +"123"; } } console.log(Student.getName());
5.继承
Class 可以通过extends 关键字实现继承
class Point {
}
class ColorPoint extends Point {
}
子类可以直接调用父类的方法
class Person { static getName() { return "wu" } } class Student extends Person { } console.log(Student.getName());
6.super关键字
super这个关键字,既可以当作函数使用,也可以当作对象使用。
super作为函数调用时,代表父类的构造函数。函数时,super()只能用在子类的构造函数之中,用在其他地方就会报错;
super作为对象时,在普通方法中,指向父类的原型对象;在静态方法中,指向父类。

浙公网安备 33010602011771号