如何将静态属性添加到ES6类

时间:2016-07-13 22:32:56

标签: javascript oop static attributes ecmascript-6

我们非常清楚ES6的class也带来了:staticget以及set功能:

但是,static关键字似乎仅保留给方法:

class Person {

    // static method --> No error
    static size(){
    }   
  // static attribute --> with Error
    static MIN=10;
}

如何在ES6类中编写static属性以获得类似静态属性MIN的内容。

我们知道我们可以在课程定义后添加以下指令:

Person.MIN=10; 

但是,我们的范围是找到在类块中编写指令的方法

3 个答案:

答案 0 :(得分:8)

您可以使用静态getter:



class HasStaticValue {
  static get MIN() {
    return 10;
  }
}

console.log(HasStaticValue.MIN);




答案 1 :(得分:2)

你需要一个方法来返回属性,否则它只能在类中访问,这会破坏你尝试用静态做的事情。

答案 2 :(得分:2)

除非使用静态吸气器,否则无法通过ES6达到您的示波器,但是,您可以在ES7中使用。

无论如何,Babel现在支持想要的语法(检查http://babeljs.io/):

class Foo {
  bar = 2
  static iha = 'string'
}

const foo = new Foo();
console.log(foo.bar, foo.iha, Foo.bar, Foo.iha);
// 2, undefined, undefined, 'string'