如需创建类继承,使用 extends 关键字。使用类继承创建的类继承了另一个类的所有方法:
class Car {
constructor(brand) {
this.carname = brand;
}
present() {
return 'I have a ' + this.carname;
}
}
class Model extends Car {
constructor(brand, mod) {
super(brand);
this.model = mod;
}
show() {
return this.present() + ', it is a ' + this.model;
}
}
let myCar = new Model("Ford", "Mustang");
document.getElementById("demo").innerHTML = myCar.show();
super() 方法引用父类。
通过在 constructor 方法中调用 super() 方法,我们调用了父级的 constructor 中的方法,获得了父级的属性和方法的访问权限。
getter
使用关键词get
class Car {
constructor(brand) {
this._carname = brand;
}
get carname() {
return this._carname;
}
set carname(x) {
this._carname = x;
}
}
let myCar = new Car("Ford");
document.getElementById("demo").innerHTML = myCar.carname;
即使 getter 是一个方法,当你想要获取属性值时也不要使用括号。getter/setter 方法的名称不能与属性名称相同,在本例中为 carname。可使用下划线字符 _ 将 getter/setter 与实际属性分开。
setter
使用关键词set
class Car {
constructor(brand) {
this._carname = brand;
}
get carname() {
return this._carname;
}
set carname(x) {
this._carname = x;
}
}
let myCar = new Car("Ford");
myCar.carname = "Volvo";
document.getElementById("demo").innerHTML = myCar.carname;