ES2015的class是不是无法继承静态的物件?
在过去我们可以这样做:
function A() {
}
A.prototype.someHash = {
a:1,
b:2
};
var a = new A();
a.someHash.a; //1
在现在,ES2015的class内似乎只能摆各种method跟static method?
要让每一个new出来的物件都有相同的属性只能这样搞:
class A {
constructor() {
this.someHash = {
a:1,
b:2
}
}
}
var a = new A();
A.someHash.a; //1
但这样做的话每个物件内部的someHash都是独立的,占内存。
var b = new A();
a.someHash.a = 2;
a.someHash.a; //2
b.someHash.a; //1
如果是用babel转译在浏览器上执行,直接读写A.proptotype是OK的。
但在node.js里就不行,可见这不是实际上的做法。
那么,除了改用过去的construct function、
用object __proto__搞继承之外(我比较喜欢new),
是否还有比较适当的做法可以在class里弄出能继承的静态物件/变量?