语法
基本语法实例
// Person.js
export default class {
constructor(name, age) {
this.name = name;
this.age = age;
}
getName() {
return this.name;
}
setName(name) {
this.name = name;
}
getAge() {
return this.age;
}
setAge(age) {
this.age = age;
}
say() {
return `My name is ${this.name}, I'm ${this.age} years old!`;
}
}
// test.js
import Person from './Person';
let person = new Person('Zhang San', 18);
person.getName(); // Zhang San
person.getAge(); // 18
person.setName('Li Si');
person.getName(); // Li Si
person.setAge(19); // 19
person.say(); // My name is Li Si, I'm 19 years old!
// js写出了Java的感觉
继承
// Student.js
import Person from './Person';
export default class extends Person {
constructor(name, age, teacher) {
super(name, age);
this.teacher = teacher;
}
getTeacher() {
return this.teacher;
}
setTeacher(teacher) {
this.teacher = teacher;
}
say() {
return `My name is ${this.name}, I'm ${this.age} years old, and my teacher is ${this.teacher}!`;
}
}
// test.js
import Student from './Student';
let student = new Student('Zhang San', 19, 'Mr Tian');
student.say(); // My name is Zhang San, I'm 19 years old, and my teacher is Mr Tian!
// 越写越像java,继承,重写都有了
// 遗憾的是这些属性都可以直接修改,如果能设定为不可修改的,嘿嘿~~
静态方法
在类中的方法前添加static关键字,表示该方法不会被实例继承,只允许通过类来调用(也允许在子类中直接通过类名来访问),称之为静态方法。
// Person.js
export default class {
static test() {
return 'Test static method';
}
}
// Student.js
import Person from './Person';
Person.test();
export default class extends Person {
say() {
Person.test();
}
}