[問題] ES2015的class問題

作者: mrbigmouth (大嘴先生)   2015-10-29 10:25:51
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裡弄出能繼承的靜態物件/變數?

Links booklink

Contact Us: admin [ a t ] ucptt.com