zoukankan      html  css  js  c++  java
  • ES6的学习-类 class

    定义类

    我们可以使用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(),否则会报错。

  • 相关阅读:
    lnmp mysql高负载优化
    vi查找替换命令详解
    学习资料汇总
    App应用推广
    sed 命令详解
    10个经典的Android开源应用项目
    Java基础学习总结——Java对象的序列化和反序列化
    Java制作证书的工具keytool用法总结
    Linux下安装Tomcat服务器和部署Web应用
    谈谈对Spring IOC的理解
  • 原文地址:https://www.cnblogs.com/yangrenmu/p/7392415.html
Copyright © 2011-2022 走看看