2016-07-13 9 views
2

Wir wissen sehr gut, dass class von ES6 brachte auch hinzufügen: static, get sowie set Merkmale:Wie statisches Attribut ES6 Klasse

Allerdings scheint es, dass static Schlüsselwort nur für Methoden vorbehalten:

Wie in der Lage sein, static Attribut innerhalb der ES6-Klasse zu schreiben, um etwas wie das statische Attribut MIN zu haben.

Wir wissen, dass wir die folgende Anweisung nach Klassendefinition hinzufügen:

Person.MIN=10; 

jedoch unser Bereich ist die Art und Weise zu finden, diese Anweisung innerhalb Klassenblock

+0

Vielleicht sollten Sie überprüfen, 'JS' spec und vielleicht finden Sie einen Weg, um eine Feature-Anfrage an Crockford zu senden. –

Antwort

4

können Sie statische Getter verwenden:

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

 
console.log(HasStaticValue.MIN);

2

Sie würden schreiben müssen eine Methode, um das Attribut zurückzugeben, andernfalls ist es nur innerhalb der Klasse zugänglich, was den Punkt dessen, was Sie mit statisch zu tun versuchen, zunichte macht.

+0

Pessimist .. wir brauchen etwas Optimist. –

2

Sie können Ihr Umfang mit ES6 es sei denn, statische Getter jedoch nicht erreichen, können Sie in ES7 können.

Wie auch immer, Babel Unterstützung nun die gewünschte Syntax (check 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'