[問題] ES2015的class問題
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://www.ptt.cc/bbs/Ajax/M.1446085554.A.619.html
※ 編輯: mrbigmouth (211.75.132.13), 10/29/2015 10:30:36
討論串 (同標題文章)
完整討論串 (本文為第 1 之 3 篇):
Ajax 近期熱門文章
PTT數位生活區 即時熱門文章