美文网首页
ES6的学习-类

ES6的学习-类

作者: yangrenmu | 来源:发表于2017-08-17 22:11 被阅读0次

    定义类

    我们可以使用class关键字来声明一个类,或者使用类表达式来定义一个类,类表达式可以是被命名的或匿名的。

      // 声明一个类
      class Foo {
        constructor() {
          this.color = 'blue';
        }    
      }
      // 访问类
      let foo = new Foo();
      console.log(foo.color); // blue
    
      /*******************************************/
      //  定义一个类
      let MyFoo = class Foo {
        constructor() {
          this.color = 'blue';
        }
        sayColor() {
          console.log(this.color);
        } 
      }
      // 使用 new 来使用类
      let foo = new MyFoo();
      foo.sayColor(); // blue
    

    类声明和表达式都不会声明提升,这点和函数声明不同。类声明或定义之后,需要用new 来使用类。

    • constructor

    constructor方法是类默认的方法,如果显式没有定义,则会默认添加一个空的constructor方法,一个类只能有一个名为constructor的方法,该方法会默认返回实例对象this(包含自身属性和原型对象的属性方法);

      class Foo {
        constructor() {
          this.color = 'blue';
        }    
        sayColor() {
          console.log(this);
        }
      }
      let foo = new Foo();
      foo.sayColor();
    

    可以看出,this含有实例对象自身的属性和原型对象上的方法。
    • 静态方法

    static关键字用来定义一个类的静态方法,在静态方法中没有this值,调用静态方法也只能用类来直接调用。

      class Foo {
        static sayColor() {
          console.log('blue');
        } 
      }
      Foo.sayColor(); // blue
    
    • 使用extends继承父类

    extends关键字用于创建一个子类,来继承父类所有属性和方法。

      class Parent {
        constructor() {
          this.money = 100;
        }
        sayMoney() {
          console.log(this.money);
        } 
      }
      class Son extends Parent {
      }
      let son = new Son();
      son.sayMoney(); // 100
    

    子类中若要使用this关键字,则需要先在构造函数constructor()内部调用super(),否则会报错。

    相关文章

      网友评论

          本文标题:ES6的学习-类

          本文链接:https://www.haomeiwen.com/subject/nilbfxtx.html