ES6个人学习整理(八)——Class

语法

基本语法实例

// 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();
    }
}

你可能感兴趣的:(ES6,ES6)