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中并不明显。