class是es6新增定义类的,,巴啦啦…

static

static定义的是改类自己的静态方法。

  • 不静态方式是作为构造函数的方法而非原型对象的方法
  • 使用static定义的方法,只能通过构造函数调用,不能使用实例调用

    1. class Person{
    2. static get(){
    3. console.log('person set fun')
    4. }
    5. set(){
    6. console.log('set')
    7. }
    8. }
    9. class Ming extends Person{}
    10. const p = new Person();
    11. const m = new Ming();
    12. console.log('p class:',p)
    13. console.log('m class:',m)
    14. Person.get();
    15. Ming.get();
    16. // p.get() // Uncaught TypeError: p.get is not a function
    17. // m.get() // Uncaught TypeError: m.get is not a function

    image.png

    私有属性

    私有属性需要前面加 #。⚠️:除了私有属性还需要注意,前面没有加this。这不是单单是静态属性。其他属性定义时候也不需要添加this就可以。

    1. class Person{
    2. // 私有属性
    3. #size = 1;
    4. getSize(){
    5. return this.#size;
    6. }
    7. }
    8. const p = new Person();
    9. console.log(p.size); // undefined
    10. console.log(p.getSize());
    11. console.log(p)

    image.png