Class ES6类,成员属性定义为静态/共享

Class ES6类,成员属性定义为静态/共享,class,static-members,ecmascript-6,ecmascript-harmony,Class,Static Members,Ecmascript 6,Ecmascript Harmony,我正在用io.js 2.xx测试ES 6中的类 下面的例子是我从Mozilla中得到的, 事情正在步入正轨(JS中的OOp), 至少我们现在有了直接继承(在语法级别)和 “扩展”指令。。。 我提出的问题是成员属性是在构造函数中定义的 这至少是一个语法问题。。。 (通过网络进行搜索,发现关于这方面的信息很少) 当ESxx尝试向属性成员提供可见性指令时,问题会更大(我想在不久的将来) 不管怎样,现在。。。 如何声明共享/静态属性 // example from Mozilla class Polyg

我正在用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';
    }
  }

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


它会起作用的。查看

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


这并不理想,但很管用。

接下来可能会出现这样的情况:是的。。。这似乎是要走的路。。。希望它能很快成为现实。。。但有些功能仍然缺失…好吧。。。但在这一演变过程中有趣的是抓住了操作系统OOP的最佳实践。。。像逻辑语法。。。封装。。。也许在未来的泛型,操作符重载等,你可以使用实验巴别塔功能-。这是。但请注意,它不会很快在本地实现
class Foo {
  constructor() {

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

console.log(Foo.bar) // 'bar'
console.log(new Foo().baz) // 'baz'
class Foo {
  static get bar() {
    return 42;
  }

  get bar() {
    return 21;
  }
}