ES6之class

ES6之class

ES6中class+extends实现继承与ES5实现继承的区别

es5继承
es6继承

一、私有属性和私有方法的实现

  • ES5

  • ES6变通的方式模拟实现

  1. 命名上使用_

    1
    2
    3
    4
    5
    6
    7
    8
    class Foo{
    publicMethod(){
    console.log('i am public method');
    }
    _privateMethod(){
    console.log('i am private method');
    }
    }
  2. 定义在外部

    1
    2
    3
    4
    5
    6
    class Foo{
    bar(){
    baz.call(this);
    }
    }
    function baz(){}
  3. symbol唯一性
    待开拓…

  • 新提案

    #表示

    1
    2
    3
    4
    5
    6
    class Foo{
    #prop = 'i am 私有属性';
    #method(){
    console.log('i am 私有方法');
    }
    }

二、静态属性和静态方法的实现

  • ES5

    1
    2
    3
    4
    5
    6
    7
    function Person(){

    }
    Person.blood = "red";
    Person.getEyes = function(){
    return 2;
    }
  • ES6,class内部只有静态方法,没有静态属性

    1
    2
    3
    4
    5
    6
    class Foo{
    static classMethod(){
    console.log('i am 静态方法');
    }
    }
    Foo.prop = 'i am 静态属性';
  • 新提案

    1
    2
    3
    class Foo{
    static prop = 1
    }