【发布时间】:2017-05-13 01:56:56
【问题描述】:
目前在 ES5 中,我们很多人都在框架中使用以下模式来创建类和类变量,这很舒服:
// ES 5
FrameWork.Class({
variable: 'string',
variable2: true,
init: function(){
},
addItem: function(){
}
});
在 ES6 中,您可以原生创建类,但没有选项可以使用类变量:
// ES6
class MyClass {
const MY_CONST = 'string'; // <-- this is not possible in ES6
constructor(){
this.MY_CONST;
}
}
遗憾的是,上述方法不起作用,因为类只能包含方法。
我知道我可以在 constructor 中使用 this.myVar = true...但我不想“垃圾”我的构造函数,尤其是当我有 20-30 多个参数用于更大的类时。
我想了很多方法来处理这个问题,但还没有找到好的方法。 (例如:创建一个ClassConfig 处理程序,并传递一个parameter 对象,该对象与类分开声明。然后处理程序将附加到类。我在考虑WeakMaps 也以某种方式集成。)
你有什么样的想法来处理这种情况?
【问题讨论】:
-
您的主要问题是您的构造函数中会重复使用 20-30 个参数的
this.member = member? -
你不能在课堂下使用
public variable2 = true吗?这将在原型上定义它。 -
@Θεόφιλος Μουρατίδης:是的,而且我想将我的构造函数用于初始化过程,而不是用于变量声明。
-
@derylius:这是主要问题,它没有这样的功能。在 ES6 草案中甚至还没有决定公共/私人使用。试一试:es6fiddle.net
标签: javascript class ecmascript-6