es6类有公共属性和功能吗?

Rai*_*aif 2 javascript properties class public ecmascript-6

我看到的所有类的例子都是

class myClass{
    constructor(){}
    someFunction(){}
Run Code Online (Sandbox Code Playgroud)

我要补充的是

    someObject {myvalue:value}
}
Run Code Online (Sandbox Code Playgroud)

这似乎没有编译.一个老式的对象将是

{
    somefunction: function(){}
    someProperty:  {myvalue:value}
} 
Run Code Online (Sandbox Code Playgroud)

这在es6课程中是不可能的?

Cod*_*gue 6

你需要把它放在你的构造函数中:

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

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

class myClass{
    constructor(){

    }
}
myClass.prototype.someObject = { myvalue:value };
var obj = new myClass();
console.log(obj.someObject.myvalue); // value
Run Code Online (Sandbox Code Playgroud)

请注意,类上没有真正的私有属性.您附加到类的任何变量都是公共的.

ES7中的类属性有第0阶段提案.如果使用Babel,可以使用实验模式启用,允许以下内容:

class MyClass {
  myProp = {value: "one"};
  constructor() {
    console.log(this.myProp);
  }
}
Run Code Online (Sandbox Code Playgroud)