es6 class 可以具有 public 属性和功能吗?

can es6 class have public properties as well as functions?

我看到的类的例子都是

class myClass{
    constructor(){}
    someFunction(){}

我要补充的是

    someObject {myvalue:value}
}

这似乎无法编译。一个老式的对象是

{
    somefunction: function(){}
    someProperty:  {myvalue:value}
} 

这在 es6 中是不可能的吗类?

您需要将其放入您的构造函数中:

class myClass{
    constructor(){
        this.someObject = { myvalue:value };
    }
}
var obj = new myClass();
console.log(obj.someObject.myvalue); // value

如果需要,您可以像在 ES5 中一样将对象添加到原型链上:

class myClass{
    constructor(){

    }
}
myClass.prototype.someObject = { myvalue:value };
var obj = new myClass();
console.log(obj.someObject.myvalue); // value

请注意 class 上没有 真正的 私有属性。您附加到 class 的任何变量都是 public.

Class Properties in ES7 有一个第 0 阶段提案。如果使用 Babel,可以使用实验模式启用它,允许以下操作:

class MyClass {
  myProp = {value: "one"};
  constructor() {
    console.log(this.myProp);
  }
}

有一种简单的方法可以模拟属性:吸气剂。

var obj = {myvalue:value};

class Foo {
    get someProperty() {
       return obj;
    }
}

使用它是否有意义完全取决于用例。