Javascript es6类能否既具有公共属性又具有函数?

Javascript es6类能否既具有公共属性又具有函数?,javascript,class,properties,public,ecmascript-6,Javascript,Class,Properties,Public,Ecmascript 6,我看到的所有类的例子都是 class myClass{ constructor(){} someFunction(){} 我想补充的是 someObject {myvalue:value} } 这似乎无法编译。一件老式的东西可能是 { somefunction: function(){} someProperty: {myvalue:value} } 这在es6类中不可能吗?您需要将其放入构造函数中: class myClass{ con

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

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
注意,类上没有真正的私有属性。附加到类的任何变量都是公共的

有一个第0阶段的建议。如果使用Babel,可以使用实验模式启用此功能,允许以下操作:

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

有一种简单的方法来模拟属性:getter

var obj = {myvalue:value};

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

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

您好,谢谢,但我真的希望在原型和类声明中都使用它。这可能吗?目前,您可以将与ES5中相同的内容添加到原型中:
myClass.prototype.someObject={…}。如果你使用的是Babel,它允许在实验模式下,我不得不说这在类规范中是一个几乎荒谬的遗漏。我的意思是什么样的傻瓜设计了一个只有函数的类?如果你只想要函数,你甚至不需要一个该死的类。非常令人沮丧的情况。无论如何,谢谢你给我指点es7巴贝尔解决方案。好的,在阅读了巴贝尔文档中关于类属性的内容之后,它似乎有点问题。源于js使用的原型继承。这也许是js中从来没有也不应该有类结构的一个原因,因为它让人相信这个类的行为将类似于任何其他语言中的类,这是不正确的。为什么您希望将值存储在原型上?是的,谢谢。我的目标是一些优雅的东西作为我的领域的模式。所谓优雅,我指的是简单,没有很多必要的程序知识。我认为这门课的语法糖是行不通的。但我可能会找到办法。所以我的对象是一组函数。我不想让它嵌套得太深。呵呵,我忘记了ES5的getter——这比使用原型要干净得多,而原型在ES6中并不明显。