es6学习--class

es6引入了 Class(类)这个概念,作为对象的模板。通过class关键字,可以定义类。

  1.基本语法

class Person{
    constructor(name,age){
        this.name = name;
        this.age = age;
    }

    toString() {
        return "我叫" + this.name +",今年" +this.age +"岁了!";
    }
}

var person = new Person('wu',12);

console.log(person.toString());

    constructor方法是类的默认方法,通过new命令生成对象实例时,自动调用该方法。一个类必须有constructor方法,如果没有显式定义,一个空的constructor方法会被默认添加。

      类必须使用new调用,否则会报错。这是它跟普通构造函数的一个主要区别,后者不用new也可以执行。

2.表达式形式定义

let Person =  class {
    constructor(name,age){
        this.name = name;
        this.age = age;
    }

    sayName() {
        return "我叫" + this.name +",今年" +this.age +"岁了!";
    }
}

var person = new Person('wu',12);

console.log(person.sayName()); 

3.不存在提升,不存在私有方法(可以自己模拟)

 

4.静态方法

  如果在一个方法前,加上static关键字,就表示该方法不会被实例继承,而是直接通过类来调用,这就称为“静态方法”。

  

class Person {
    static getName() {
        return "wu"
    }
}

console.log(Person.getName());

  

父类的静态方法,可以被子类继承。

 继承语法  

class 子类 extends 父类{
}

父类有一个静态方法,子类可以调用这个方法。

静态方法也是可以从super对象上调用的。

class Person {
    static getName() {
        return "wu"
    }
}

class Student extends Person {
    static getName(){
        return super.getName() +"123";
    }
}

console.log(Student.getName());

 

5.继承

 Class 可以通过extends 关键字实现继承

class Point {
}

class ColorPoint extends Point {
}

 子类可以直接调用父类的方法

class Person {
    static getName() {
        return "wu"
    }
}

class Student extends Person {
  
}

console.log(Student.getName());

 

6.super关键字

super这个关键字,既可以当作函数使用,也可以当作对象使用。

super作为函数调用时,代表父类的构造函数。函数时,super()只能用在子类的构造函数之中,用在其他地方就会报错;

    super作为对象时,在普通方法中,指向父类的原型对象;在静态方法中,指向父类。

posted @ 2017-08-30 16:21  风起了--  阅读(149)  评论(0)    收藏  举报