当前在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;
}
}
可悲的是,上述方法不起作用,因为类只能包含方法。
我知道我可以this.myVar = true
在constructor
...但我不想“垃圾”我的构造,特别是当我有一个更大的类20-30 +参数。
我在考虑解决该问题的多种方法,但尚未找到任何好的方法。(例如:创建一个ClassConfig
处理程序,并传递一个parameter
与类分开声明的对象。然后该处理程序将附加到该类。我正在考虑WeakMaps
通过某种方式进行集成。)
您将如何处理这种情况?
我解决此问题的方法是另一种选择(如果您有jQuery,则该方法)是在老式对象中定义字段,然后使用该对象扩展类。我也不想给构造函数添加任务,这似乎是一个很好的解决方案。
-根据Bergi的评论进行更新。
没有JQuery版本:
您仍然最终会使用“胖”构造函数,但至少将其全部放在一个类中并一次命中。
编辑#2: 我现在走了一个完整的圈子,现在正在构造函数中分配值,例如
为什么?实际上,很简单,使用上面的代码和一些JSdoc注释,PHPStorm可以对属性执行代码完成。一次命中分配所有变量很不错,但是无法编写完整的属性imo不值得(几乎肯定是很小的)性能好处。