ES2015新引入的class有个令人兴奋的”继承”
class User
{
constructor(n)
{
this._name = n;
}
showme()
{
console.log(this._name);
}
}
// 继承
class student extends User
{
constructor(sname)
{
super(sname);
}
}
// 实例化子类
let s = new student("lily");
s.showme();//打印:lily
s._name;// 也能访问,还没有私有属性的概念
实战演练
1.有个User对象(基类)
2.里面包含了teacher和student类,都统一继承User
3.我的名字叫jack,如果我是学生并且也是一个对象,则继承student
这个业务的JS代码该怎么写?
class User
{
constructor(n)
{
this._name = n;
}
showme()
{
console.log(this._name);
}
static get Student()
{
// 返回一个继承User的类
return class extends User{
constructor(sname){
super("学生的名字是:"+sname);
}
}
}
static get Teacher()
{
// 返回一个继承User的类
return class extends User{
constructor(tname){
super("老师的名字是:"+tname);
}
}
}
}
//继承
class jack extends User.Student
{
constructor(sname)
{
super(sname);
}
}
let s = new jack("杰克");
s.showme();//学生的名字是:杰克
换成老师
class jack extends User.Teacher
{
constructor(sname)
{
super(sname);
}
}
let s = new jack("杰克");
s.showme();//老师的名字是:杰克