Javascript es6将两个静态类合并到一个对象中
我有以下代码:Javascript es6将两个静态类合并到一个对象中,javascript,ecmascript-6,Javascript,Ecmascript 6,我有以下代码: class A { static b() { } } class B { static c() { } } 我试图将这两个静态类合并为一个: const combined = { ...A, ...B }; 但是,合并后的对象会产生一个空对象,而我希望对象包含所有合并的静态方法 我做错了什么?您可以在新对象上设置方法 const combined = {A:A.b, B:B.c} 您可以从A扩展B,然后从B扩展另一个类 但是,如果您使用的是静态类,
class A {
static b() {
}
}
class B {
static c() {
}
}
我试图将这两个静态类合并为一个:
const combined = { ...A, ...B };
但是,合并后的对象会产生一个空对象,而我希望对象包含所有合并的静态方法
我做错了什么?您可以在新对象上设置方法
const combined = {A:A.b, B:B.c}
您可以从A扩展B,然后从B扩展另一个类 但是,如果您使用的是静态类,那么最好只使用对象文本
A类{
静态b(){
console.log('称为A.b')
}
}
B类扩展了A类{
静态c(){
console.log('称为B.c')
}
}
类组合扩展了B{}
合并.b()
Combined.c()
您可以使用对象获取类的静态方法数组。getOwnPropertyNames
:
A类{
静态staticMethod(){}
非静态方法(){}
}
log(Object.getOwnPropertyNames(A))代码>是否尝试在新对象上定义静态方法?是。这就是我试图实现的,在新对象中定义静态方法。我希望在将来添加其他静态方法。我不希望每次创建一个新的时都静态地将它放在那里。然后,您可以使用let
定义combined
然后在重新定义combined
和添加属性类C{static d(){}时使用对象扩展;combined={…combined,C:C.d}