3 回答

TA貢獻1806條經驗 獲得超5個贊
如果您確切地知道自己在做什么,并且正在精心設計的元編程系統中創建類的層次結構(即您想要復制的事物),那么就可能需要匿名類,并且沒有其他優雅的擴展解決方案,例如
{
myImplementation: class extends MyBaseClass {
someMethod(x) {
super().someMethod(x);
insert extended behavior
}
}
}
當然,您可以使用一些濫用魔術功能來實現上述功能Object.assign:
{
myImplementation: extendMagic(mySuper => ({
someMethod(x) {
mySuper.someMethod(x);
insert extended behavior
}
}))
}
或找到一些更好的方式來做自己在做的事情。但是人為的用例偶爾會(盡管很少)存在。
用例從來都不是很好,但是當您需要難以通過原型繼承編寫的Class功能時,這些用例最引人注目(當然,由于Class是圍繞原型繼承的包裝器,因此您的使用案例歸結為想要語法糖加es6 +類的功能...是否需要構造函數,super和extends和staticmethod等...?是否堅持使用已經存在的類,還是可以使用Objects和asserts編寫所有內容?是匿名的?這些問題可以幫助你決定)。

TA貢獻1843條經驗 獲得超7個贊
讀者應注意以下引號:“這種書寫方式會導致每次對表達式求值時都會創建一個新的構造函數和原型對象。如果使用這種方法創建多個對象,它們將不會獲得類/原型的任何好處?!?nbsp;-除非我誤解了,否則這是為每個對象創建一個匿名類的有效反對,但不一定是使用匿名類創建多個對象的反對,在這種情況下,它們仍將受益于原型繼承。(其他反對意見可能存在,也可能不存在。)
添加回答
舉報