作者mrbigmouth (大嘴先生)
看板Ajax
标题[问题] ES2015的class问题
时间Thu Oct 29 10:25:51 2015
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里弄出能继承的静态物件/变数?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 211.75.132.13
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Ajax/M.1446085554.A.619.html
※ 编辑: mrbigmouth (211.75.132.13), 10/29/2015 10:30:36