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;
}
}
使用它是否有意义完全取决于用例。
我看到的类的例子都是
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;
}
}
使用它是否有意义完全取决于用例。