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

1240
可以看出,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(),否则会报错。

转载于:https://www.cnblogs.com/yangrenmu/p/7392415.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值