es6 学习笔记5

1、class

  通过该关键词,可以定义类,基本上,es6的class可以看做只是一个语法糖,并且在类的内部所有定义的方法,都是不可枚举的

  <1>在class里面定义一个constructor的构造方法,this关键词代表的是实例对象,需要对class传递参数的话,就用constructor来接收

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

class Person {
       constructor(x, y) {
       
      }  
}    

  <2>调用该方法: const p = new Person(1,2);

  <3>与函数一样,类也可以使用表达式的形式定义,并且使用表达式定义类之后,这个类的名称是myClass 而不是MyClass了,并且MyClass只能在class的内部可以用,指代当前类,

  如果内部没有用到的话,可以省略MyClass 

const myClass = class MyClass {
}

  <4> 类不存在变量提升,类必须在使用的之前定义

  <5>私有方法可以通过在方法的前面加下划线来区分,但是这种命名是不保险的,在类的外部,还是可以调用到这个方法,也可以通过将私有方法移出模块,因为模块内部的所有方法都是对外可见的,可以通过bar.call(this, baz)来调用

  <6>私有的属性的话,是在变量前面添加#

  <7>name属性,返回的是紧跟在class关键字后面的类名

    p.name //"Person"

  <8>在类的内部可以使用get和set关键字,对摸个属性设置存值函数和取值函数,拦截该属性的存取行为

  <9>class的内部只有静态方法,没有静态属性,因此,类的实例属性可以用等式,写入类的定义之中。静态数次那个的话,就是在实例属性的前面加一个static关键字

  <10>new.target属性

    该属性一般用在构造函数之中,返回new命令作用于的那个构造函数,如果构造函数不是通过new命令调用的,那么new,.target会返回undefined,因此这个属性可以用阿里确定构造函数是怎么调用的

  <11>class可以通过extends关键字来实现继承

    (1)如果是父类继承父类的时候使用super

      子类必须constructor中调用super的方法,并且还必须在调用super之后,才能使用this关键词,因为子类没有自己的this对象,而是继承父类的this对象,如果不调用的话,子类就得不到this对象,在创建实例的时候会报错

      比如constructor中调用父类的的constructor的时候,在子类的从constructor中使用super(x,y);

    (2)父类的静态方法也可以被子类继承

    (3)super作为函数调用的时候(super()),代表父类的构造函数,只能在constructor中使用,super作为对象的时候(super.a()),在普通方法中,指向父类的原型对象,在静态方法中,指向父类

  <11>mixin模式的实现

    mixin指的是多个对象合成一个新的对象,新对象具有各个组成成员的接口

    

  

原文地址:https://www.cnblogs.com/qzccl/p/7814986.html