ES6类,成员属性定义为static / shared

时间:2015-05-26 21:49:51

标签: class static-members ecmascript-6 ecmascript-harmony

我正在使用io.js 2.xx测试ES 6中的类 我从Mozilla拿到的例子, 事情正在上升(JS中的OOp), 至少我们现在有直接继承(在语法级别) '延伸'指示... 我提出的问题是成员属性是在构造函数中定义的 这至少是一个语法问题...... (通过网络搜索,发现很少有关于此的信息) 当ESxx试图向财产成员提供可见性指令时(在不久的将来我猜),这将是一个更大的问题。

无论如何,现在...... 如何声明共享/静态属性?

// example from Mozilla
class Polygon 
  {
  constructor(height, width) 
    {
    this.name = 'Polygon';
    this.height = height;
    this.width = width;
    }
  }

class Square extends Polygon 
  {
  constructor(length) 
    {
    super(length, length);
    this.name = 'Square';
    }
  }

2 个答案:

答案 0 :(得分:1)

您仍然可以使用旧语法向构造函数(静态属性)或原型(预定义实例属性)添加属性

class Foo {
  constructor() {

  }
}
Foo.bar = 'bar';
Foo.prototype.baz = 'baz';

console.log(Foo.bar) // 'bar'
console.log(new Foo().baz) // 'baz'

它会起作用。看example on babel-repl

答案 1 :(得分:1)

您可以使用 getters 定义静态或原型属性:

class Foo {
  static get bar() {
    return 42;
  }

  get bar() {
    return 21;
  }
}

它并不理想,但它确实有效。