class Base{
constructor(arg1,arg2){
this.arg1 = arg1;
this.arg2 = arg2;
}
save(){
console.log('Parent Saving..... '+this.arg1);
}
update(){
console.log('Parent Updating!!!! '+this.arg2);
} }
class User extends Base{
constructor(arg1,arg2,arg3){
super(arg1,arg2);
this.arg3 = arg3;
}
remove(){
console.log('Child Removing!!!! '+this.arg3);
}
update(){
console.log('Child Updating ... '+this.arg3);
} }
user = new User(‘小明’,’老王’,’lpn’);
user.save();
user.update();
user.remove();
https://www.npmjs.com/package/node-class
最新的NodeJS(8)全面支持了类似Java的类和继承机制,包括类的什么、继承、静态方法等。
类的什么
声明一个类的方法通过class关键字,比如下面这样:
class Person{
constructor(name,age){
this.name=name;
this.age=age;
}
getInfo(){
return this.name+’:’+this.age;
}
}
从上面的代码可以看出constructor相当于Java中的构造函数,对类的属性name和age进行了初始化。
getInfo是类的方法,注意这里并没有使用function关键字
如果我们要生成这个类的对象,通过new关键字就可以了:
var person=new Person(“Eric”,41);
console.log(person.getInfo());
类的继承
类的继承使用了extends关键字,像下面这样:
class Student extends Person{
constructor(name,age,sex){
super(name,age);
this.sex=sex;
}
getInfo(){
return super.getInfo()+”,”+this.sex;
}
}
var student=new Student(“Eric”,41,”Male”);
console.log(student.getInfo());
类的静态方法
类中可以定义静态方法,这样就不用创建对象而是直接通过类名来调用类的方法,比如:
class Student extends Person{
constructor(name,age,sex){
super(name,age);
this.sex=sex;
}
getInfo(){
return super.getInfo()+”,”+this.sex;
}
static print(){
console.log(“I’m static method!”);
}
}
Student.print();
static 关键字将print方法定义为静态方法,这样我们就可以直接通过Student.print()来访问它了。