class - 属性表达式

类的属性名,可以采用表达式。

let methodName = 'getArea';

class Square {
  constructor(length) {
    // ...
  }

  [methodName]() {
    // ...
  }
}
上面代码中,Square类的方法名getArea,是从表达式得到的。

Class 表达式

与函数一样,类也可以使用表达式的形式定义。

const MyClass = class Me {
  getClassName() {
    return Me.name;
  }
};
上面代码使用表达式定义了一个类。需要注意的是,这个类的名字是Me,
但是Me只在 Class 的内部可用,指代当前类。
在 Class 外部,这个类只能用MyClass引用 let inst = new MyClass(); inst.getClassName() // Me Me.name // ReferenceError: Me is not defined 上面代码表示,Me只在 Class 内部有定义。

  采用 Class 表达式,可以写出立即执行的 Class

let person = new class {
  constructor(name) {
    this.name = name;
  }

  sayName() {
    console.log(this.name);
  }
}('张三');

person.sayName(); // "张三"
上面代码中,person是一个立即执行的类的实例。

  

 

posted @ 2020-03-25 16:08  banzhuxiang  阅读(482)  评论(0)    收藏  举报