JS 和 ES6:从 class 中访问静态字段

JS & ES6: Access static fields from within class

在 ES6 中,给出以下示例:

export default class MyStyle extends Stylesheet {
   static Color = {
      mainDark: '#000'
   }
   static Comp = {
      ...
      color: Color.mainDark
   }
}

如何访问 Color.mainDark(静态字段)?

'use strict';

 class User {
   constructor(firstName, lastName) {
   this.firstName = firstName;
   this.lastName = lastName;
 }

 static createGuest() {
    return new User("guest", "site");
   }
 };

 let user = User.createGuest();

  alert( user.firstName ); // guest

  alert( User.createGuest ); // createGuest ... (function)

和常量:

'use strict';

class Menu {
 static get elemClass() {
   return "menu"
 }
}

alert( Menu.elemClass ); // menu

使用对上下文对象的调用 --- this

ES6 - Call static method within a class

您可以按预期访问它,但是如果我记得使用 Babel 并立即导出 class 时存在一些问题,那么在定义 class 之后导出如果你有问题:

class MyStyle extends Stylesheet {
   static Color = {
      mainDark: '#000'
   }

  someMethod() {
    console.log(MyStyle.Color.mainDark);
  }
}

export default MyStyle;

您可以在 中阅读有关 Babel 问题的更多信息,据推测该问题已在 Babel 6.2.1 中修复。